Importer des données dans des NSArray

VeillardVeillard Membre
13:41 modifié dans API AppKit #1
Bonjour,

Je sollicite à  nouveau la liste poir avoir quelques conseils  ;D

Je voudrais importer des données dans 3 Array différents à  partir de données collées dans un NSTextView si c'est possible...
Comment présenter les données à  coller ?  Séparées par des tabulations, des virgules ou des points virgules ?

Place aux experts  :D

Réponses

  • muqaddarmuqaddar Administrateur
    13:41 modifié #2
    Je suis pas expert. :)
    A mon avis , tu as le choix du séparateur.

    Ensuite utilise :
    - (NSArray *)componentsSeparatedByString:(NSString *)separator

    Comme là  :
    NSString *list = @titi, toto, tata;
    NSArray *listItems =
      ;Note l'espace après la virgule ici...Cette fonction te renvoie un array de strings que tu peux mettre ensuite ds tes tableViews.
  • VeillardVeillard Membre
    13:41 modifié #3
    Salut oxitan  ;)

    Merci pour ta réponse, je vais essayer avec la virgule comme séparateur.
  • VeillardVeillard Membre
    13:41 modifié #4
    OK ça marche 

    Par contre je n'ai que des "string" dans mon array. Comment peut-on faire pour avoir des "number" à  la place. J'ai essayé un peu tout et le compilateur me fait la tête  :P
  • Eddy58Eddy58 Membre
    13:41 modifié #5
    Salut Favouille :)

    Tu peux essayer la méthode decimalNumberWithString: de la classe NSDecimalNumber :

    + (NSDecimalNumber *)decimalNumberWithString:(NSString *)numericString
  • VeillardVeillard Membre
    13:41 modifié #6
    Salut Eddy

    J'ai essayé ceci :

    [profilProfondeur setArray: [[NSDecimalNumber decimalNumberWithString: tempString] componentsSeparatedByString: @&quot;&#092;n&quot;]];<br />
    


    il me répond :

    warning: `NSDecimalNumber' may not respond to `-componentsSeparatedByString:'
      :'(
  • Eddy58Eddy58 Membre
    novembre 2004 modifié #7
    C'est tout à  fait normal Favouille, les choses sont un peu plus compliquées que ça... :-\
    Il te faut convertir une par une les strings dans l'array (désolé je l'ai pas fait exprès ;D ;D) retourné par la méthode componentsSeparatedByString: en objets de classe NSDecimalNumber, et ensuite tu composes au fur et à  mesure un NSMutableArray avec ces NSDecimalNumber (ou alors tu remplaces les NSString de l'array d'origine par les NSDecimalNumber correspondants au fur et à  mesure de leur conversion)
  • VeillardVeillard Membre
    13:41 modifié #8
    Il n'y a pas plus simple ?  :sors:
  • cbrandtcbrandt Membre
    13:41 modifié #9
    ça dépend... :)

    tu peux utiliser (pour lire)
    <br />monArray = [NSArray arrayWithContentsOfFile: @&quot;chemin&quot;];<br />
    

    et (pour écrire)
    <br />[monArray writeToFile: @&quot;chemin&quot; atomically: YES];<br />
    


    à  condition de construire ton fichier comme suit:
    (utilise le Property List Editor, fourni avec les dev tools):

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">;
    <plist version="1.0">
    <array>
    <real>0.5</real>
    <real>0.8</real>
    <real>1.5</real>
    <real>3.2</real>
    </array>
    </plist>
  • VeillardVeillard Membre
    13:41 modifié #10
    Bonsoir cbrandt

    Finalement, j'ai utilisé la solution d'Eddy :

    NSString *tempString = [[importProfondeurField string] copy];<br />	<br />	NSArray *tempArray = [tempString componentsSeparatedByString: @&quot;&#092;n&quot;];<br />	<br />	[profilProfondeur removeAllObjects];<br /><br />	for (i = 0 ; i &lt; [tempArray count] ; i++)<br />	{<br />		[profilProfondeur addObject: [NSDecimalNumber decimalNumberWithString: [tempArray objectAtIndex: i]]];<br />	}...<br />
    


    et ça marche !

    Voilà 
  • VeillardVeillard Membre
    13:41 modifié #11
    Au fait, juste une question pour ma culture perso  ;D

    L'array que j'obtiens contient des <integer>, or si je veux des <real> comment je fais ?

    J'ai bien tenté ceci mais c'était trop beau pour être vrai.

    [SLOW_Flag addObject: [NSNumber numberWithString: [tempArray objectAtIndex: i]]];
    


    En fait "numberWithString" n'existe pas  :-\
  • ClicCoolClicCool Membre
    13:41 modifié #12
    Salut Favouille :)

    [profilProfondeur addObject: [NSNumber NumberWithDouble: [[tempArray objectAtIndex: i] doubleValue]]];
    


    Comme ça ça doit marcher ;)
  • VeillardVeillard Membre
    13:41 modifié #13
    Hello ClicCool  :D

    Désolé mais j'avais mal formulé ma question ::) Je m'en suis rendu compte en lisant ton code  ;D

    En fait, j'obtenais des <real> (valeurs décimales) et je voudrais des <integer> (valeurs entières).

    Je n'ai jamais été très fort en maths  :crackboom:-

  • ClicCoolClicCool Membre
    13:41 modifié #14
    Ben c'est pareil:

    [profilProfondeur addObject: [NSNumber NumberWithInt: [[tempArray objectAtIndex: i] intValue]]];
    


    non ?
  • VeillardVeillard Membre
    13:41 modifié #15
    Désolé  o:)   on va dire que c'est la fatigue  :P

    Merci
Connectez-vous ou Inscrivez-vous pour répondre.