Разобрать строку и добавить результирующие значения
Как разобрать следующую строку
{
City = "New York";
Country = "United States";
CountryCode = us;
}
и добавьте вместе значения внутри "" и оставив оставшуюся часть строки. Мне нужно получить измененную строку как "Нью-Йорк, США".
CFStringRef address = ABMultiValueCopyValueAtIndex(multiValue, identifier);
Когда я снимаю CFStringRef
в NSString
Я получаю выше зарегистрированную форму. Как я получу значения города / страны из строки
1 ответ
Если вы получаете эту строку данных (вероятно, JSON) из Интернета, вы можете обработать данные следующим образом (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 и т. Д.