私はここで同様の質問をしましたが、私が直面している問題の答えを見つけられませんでした..iOS(Objective-c)でJSONデータを解析してTableViewに表示します。空の値を取得する
これまでJSONデータを解析して辞書に格納できました。ここではJSONデータは、その生の形式でどのように見えるかです:
{"stores":[{"address":"7801 Citrus Park Town Center Mall","city":"Tampa","name":"Macy's","latitude":"28.068052","zipcode":"33625","storeLogoURL":"http://strong-earth-32.heroku.com/images/macys.jpeg","phone":"813-926-7300","longitude":"-82.573301","storeID":"1234","state":"FL"},
{"address":"27001 US Highway 19N","city":"Clearwater","name":"Dillards's","latitude":"27.9898988","zipcode":"33761","storeLogoURL":"http://strong-earth-32.heroku.com/images/Dillards.jpeg","phone":"727-296-2242","longitude":"-82.7294986","storeID":"1235","state":"FL"},
など..
あなたが見ることができるように、それは辞書の配列の辞書です。したがって、私は最初に生データを辞書に格納し、key = stores
のvalue
を抽出し、それを配列に格納しました。その後、私は各フィールドを抽出し、それをカスタムオブジェクトtempStoreに保存しました。ここが失敗するときです。私は、テーブルのセルを移入するためのpopulatedStoreArrayを使用し、今
- (id) init
{
if (self = [super init])
{
self.address = @"address";
self.city = @"city";
self.name = @"name";
self.latitude = @"latitude";
self.longitude = @"longitude";
self.state = @"state";
self.phone = @"phone";
self.storeid = @"storeID";
self.url = @"storeLogoURL";
self.zipcode = @"zipcode";
}
return self;
}
:
- (void)viewDidLoad
{
[super viewDidLoad];
[populatedStoreArray addObject:@"blah"];
NSString *jsonRawData = [[NSString alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://strong-earth-32.heroku.com/stores.aspx"]];
if([jsonRawData length] == 0)
{
[jsonRawData release];
return;
}
SBJsonParser * parser = [[SBJsonParser alloc]init];
resultData = [[parser objectWithString:jsonRawData error:nil]copy];
NSArray *storeArray = [[NSArray alloc]init];
storeArray= [resultData objectForKey:@"stores"];
Store *tempStore = [[Store alloc]init];
/*NSLog(@"show me stores: %@", storeArray);*/
for(int i=1;i<[storeArray count];i++)
{
NSDictionary *tempDictionary = [storeArray objectAtIndex:i];
if([tempDictionary objectForKey:@"address"]!=nil)
{
tempStore.address= [tempDictionary objectForKey:@"address"];
//NSLog(@"Address: %@",tempStore.address);
}
//and so on for other keys
[populatedStoreArray addObject:tempStore];
NSLog(@"In array: %@",[populatedStoreArray objectAtIndex:i]);
}
はここtempStoreオブジェクトです。私は表示されるフォーマットについてはわかりませんが、私の主な関心事は、populatedStoreArrayを印刷しようとすると、tempStoreに値が設定されていてもその内容がnullであることです。 私はここで何が欠けていますか? また、populatedStoreArrayは.hファイル内でプロパティとして宣言されます。
@property (nonatomic, strong) NSMutableArray * populatedStoreArray;
ありがとうございます。あなたのNSMutableArrayのもココア事項としてpopulatedStoreArray = [[NSMutableArray alloc] init];