2012-03-26 3 views
0

Webサービスから6つの値(名前、年齢、性別、住所、ID、タグなど)を取得します。すべてが文字列変数です。これらの文字列を連結してNSMutableArrayに追加します。この配列を別のクラスに渡します。別のクラスでは、これらの文字列を別々に必要とします。つまり、配列からこれらの値を別々に取得できる必要があります。これどうやってするの。 "Name"、 "Age"などのタグを値とともに追加する必要がありますか?それを行う適切な方法は何ですか?複数の値を1つのエントリとしてNSMutableArrayに追加して取得する

編集:これを1つの文字列に連結します。コレクションに値を追加すると、要素を簡単に取得できます。

+0

文字列を1つの「NSString」に連結していますか?あるいは、あなたは 'NSMutableArray'に6つの要素として文字列を挿入していると言っていますか?あなたの質問から伝えるのは難しいです。 – yuji

+0

私の配列の各要素は、これらすべての値を別々のエンティティとして含める必要があります。私の配列は多くの要素を持つことができます。 –

答えて

3

IMOの場合、実行しようとしていることを行う最も適切な方法は、NSMutableDictionaryを使用して、キーに基づいて個々の要素にアクセスできるようにすることです。

例:

loadedBuffers = [[NSMutableDictionary alloc] initWithCapacity:CD_BUFFERS_START]; 
[loadedBuffers setObject:bufferId forKey:filePath]; 
... 
[loadedBuffers objectForKey:filePath] 

あなたは何も厳密に辞書を使用して必要はありませんが、それはそんなに簡単にあなたの人生を行います。あなたのケースでは

(私はそれを正しく理解していれば)、私はどうなる:

NSMutableArray* result = [NSArray arrayWithCapacity:kNUM_OF_ROWS]; 

NSString *name, *age, *sex....; 

<for each set of strings from the web service> 
    <retrieve strings> 
    NSMutableDictionary dict = [NSMutableDictionary dictionaryWithCapacity:kNUM_OF_FIELDS]; 
    [dict setObject:name forKey:@"name"]; 
    ... 
    [dict setObject:address forKey:@"address"]; 

    [result addObject:dict]; 
<end_for> 

return result; 

このようにすることによって、あなたは順番に、文字列の各セットにアクセスすることができます。各文字列に個別にアクセスします。

要するに、文字列のセットを別の文字列に連結してエンコードするのではなく、辞書を使って文字列を展開すると、検索が容易になります。

+0

検索部分が簡単になりますか?辞書から別々に各値にアクセスできますか?私は、辞書の値にはキーだけでアクセスできると思います。したがって、インデックス値を使用できないと問題が発生します。私の質問は、コレクションに値を追加して、簡単に取り出せるようにする方法です。 –

+0

上記の場合、私の鍵は何ですか? –

+0

してください、私の編集を参照してください... – sergio

0

ここでは、辞書またはカスタムオブジェクトを使用することをお勧めします。そうすれば、各文字列はそのコンパニオンに格納されます(たとえば、あなたは一人のデータをまとめています)。既に実装したばかげたメソッドに対処する必要はありません。データを保存したいと思うように聞こえるので、こちらをご覧ください。それがあなたの後ろでない場合は、私に知らせてください、私はあなたの助けに私の応答を変更します!

あなたはカスタムオブジェクトクラスPersonを持っているとします。このオブジェクトPersonは、アプリケーションデリゲートを介してディスクに保存するデータオブジェクトを作成および管理します。

Person *newPerson = [[Person alloc] init]; 
[newPerson setName:@"John"]; 
[newPerson setAge:@"25"]; 
[newPerson setSex:@"M"]; 
[yourAppDelegate.newPersonArray insertObject:newPerson atIndex:[mainDelegate.newPersonArray count]]; 
関連する問題