2016-04-09 20 views
0

エンドポイントのJSON応答は常にarrayの1つで、2つのdictionaryというアイテムが常に1つだけです。JSONレスポンスを配列に追加

[ 
    { 
     "item_1": "Austin", 
     "item_2": "Texas" 
    } 
] 

私は彼らに新しいコールがエンドポイントに行われるたびにアイテムを追加することができること、item_1item_2配列を作成する必要があります。これを設定する最善の方法のアイデアはありますか?

は今、私は、プロパティを追加している:

self.item1Array = response; 
NSLog(@"Response Array: %@", self.item1Array); 

それをログ:

2016-04-01 13:35:42.787 A[66185:7391524] Response Array: (
     { 
     "item_1" = Austin; 
     "item_2" = Texas; 
    } 
) 

@property (strong, nonatomic) NSMutableArray *item1Array; 

は、次にJSONのエンドポイントからの応答に等しいitem1Arrayプロパティがいることを設定します

しかし、新しい回答をに追加しようとすると、動かなくなるおよびitem2Array

最終的には、item1Arrayには、エンドポイントへのクエリで取得されたアイテム(つまり、[@"Austin", @"Denver"])を反映する複数のアイテムが含まれています。

私がやっていることよりも、これについて何か助けや考え方がありがとうと思います。

+0

item1とitem2に異なる配列を作成すると言っていますか? –

+0

@RajanMaheshwariはい、都市のための1つの配列(item1)と州のための1つの配列(item2) – Com

+0

次に、2つのNSMutable配列を持ち、JSONを解析してitem1を最初の可変配列に追加し、item2を2番目の可変配列 –

答えて

0

2つのNSMutable配列を作成します。あなたのjsonによると、配列のオブジェクトは1つしかなく、オブジェクトには2つのキーと値の辞書があります。あなたが応答を取得するたびに

はまずその後追加viewDidLoad

item1Array = [[NSMutableArray alloc] init]; 
item2Array = [[NSMutableArray alloc] init]; 

のどこかで、あなたの変更可能な配列を初期化。

//Appending item_1 in item1Array which is a NSMutableArray 
[item1Array addObject:[[responseArray objectAtIndex:0] valueForKey:@"item_1"]]; 

//Appending item_2 in item2Array which is a NSMutableArray 
[item2Array addObject:[[responseArray objectAtIndex:0] valueForKey:@"item_2"]]; 
+0

[self.item1Array addObject:[[self.item1Array objectAtIndex:0] valueForKey:@ "item_1"]]; 'または[self.item1Array addObject:[[レスポンスobjectAtIndex:0]] valueForKey:@" item_1 "]];'でも私はnullになります。私は間違いなく応答配列を取得していますが、私が追加していることは何も働いていないようですか? – Com

+0

私は答えを編集した、あなたも最初に可変配列を初期化する必要があります。そして、jsonの応答のためにいくつかの異なる配列を取る。同じ配列ではありません –

+0

ああ、更新したものを初期化してみましょう... – Com

0

JSONの解析時に2つの配列が既に存在するはずです。新しいコンテンツを追加するだけです。

NSArray *items = [response valueForKey:@"item_1"]; 

をそしてあなただけのitemsを追加する必要があります:あなたはKVCを使用したい内容を抽出することができます。

+0

したがって、 '@property(nonatomic)NSMutableArray * w1Array;'を時間の経過とともに追加されるすべての都市を保持する可変配列として追加すると、 '[self.w1Array addObject:items];'または '[self。w1Array addObjectsFromArray:items]; '私は' null'を取得します。それが私が追加するはずのものですか? – Com

+0

あなたの助けてくれてありがとう@Wain私はあなたに投票するのに十分な信用を持っていたらいいのに – Com

+0

'items'は配列なので、' addObject: 'ではありません。 'addObjectsFromArray:' – Wain

関連する問題