1

次の文字列を解析する方法

{
City = "New York";
Country = "United States";
CountryCode = us;
}

"" 内の値を一緒に追加し、残りの文字列を除外します。変更された文字列を "New York, United States" として取得する必要があります。

CFStringRef address = ABMultiValueCopyValueAtIndex(multiValue, identifier);

にキャストCFStringRefするとNSString、上記のログ形式が得られます。文字列から都市/国の値を取得する方法

4

1 に答える 1

0

このデータ文字列 (おそらく 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などの標準フォーマットでも作業する必要があります..

于 2012-05-01T12:12:51.730 に答える