このデータ文字列 (おそらく JSON) を Web から受信している場合は、次のようにデータを処理できます (iOS 5):
- (void)processData:(NSData *)responseData {
NSError* error;
NSDictionary* json = [NSJSONSerialization
JSONObjectWithData:responseData
options:kNilOptions
error:&error];
NSString* city = [[json objectForKey:@"Address"] objectForKey:@"City"];
NSString* country = [[json objectForKey:@"Address"] objectForKey:@"Country"];
NSString* result = [city stringByAppendingFormat:@", %@",country];
NSLog(@"%@", result); //New York, United States
}
代わりに、この文字列が辞書表現である場合、正しい形式は次のようになります。
NSString *str=@"Address = {"
@"City = \"New York\";"
@"Country = \"United States\";"
@"CountryCode = us; };";
したがって、本当に NSString から NSDictionary に渡したい場合は、次のようにNSPropartyListSerializationを使用できます。
NSError* error;
NSData *dat=[str dataUsingEncoding:NSUTF8StringEncoding];
NSPropertyListFormat plistFormat;
NSDictionary *temp = [NSPropertyListSerialization propertyListWithData:dat options:NSPropertyListImmutable format:&plistFormat error:&error];
NSString* city = [[temp objectForKey:@"Address"] objectForKey:@"City"];
NSString* country = [[temp objectForKey:@"Address"] objectForKey:@"Country"];
NSString* result = [city stringByAppendingFormat:@", %@",country];
NSLog(@"%@",result);
編集(更新された質問に基づく):
あなたが投稿したのは辞書であり、配列ではありません。ディクショナリは、キー値によって識別される一連の要素で構成されます。配列は、インデックスによって識別される一連の要素で構成されます。そのため、配列内の要素が文字列の場合、各文字列の解析に取り組む必要があります。@FelixKlingが言ったように、これは通常最良の方法ではありません.json、xmlなどの標準フォーマットでも作業する必要があります..