2012-05-01 1 views
1

값. 수정 된 문자열을 "New York, United States"로 가져와야합니다. 내가 NSStringCFStringRef 캐스팅 다음 문자열</p> <pre><code>{ City = "New York"; Country = "United States"; CountryCode = us; } </code></pre> <p>을 구문 분석하고 값 "내부"와 문자열의 나머지를 떠나 함께 추가하는 방법

CFStringRef address = ABMultiValueCopyValueAtIndex(multiValue, identifier); 

, 나는 위의 기록 양식을 얻을. 어떻게 문자열에서 도시/국가 값을 검색합니다

+1

? JSON과 같은 표준 데이터 형식을 사용하지 않는 이유는 무엇입니까? 모든 것을보다 쉽게 ​​해줍니다. –

+0

코드에는이 문자열에 대한 사전 객체가 있어야합니다. 그래서 난 내 대답 (내 편집)를 참조하십시오 @JeanPaulScott 질문 – Nit

+0

를 코드를 제시해주십시오. –

답변

0

당신이 이런 식으로 데이터를 처리 할 수있는 웹에서 데이터 문자열 (아마 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 *[email protected]"Address = {" 
       @"City = \"New York\";" 
       @"Country = \"United States\";"  
       @"CountryCode = us; };"; 

을 그래서 당신은 정말 당신이 이런 식으로 NSPropartyListSerialization를 사용할 수있는 NSDictionary에있는 NSString에서 전달하려면 :

(업데이트 된 질문에 따라)
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 등 당신이에서 문자열을 가지고 않습니다

+0

코드 행'NSData * dat = [str dataUsingEncoding : NSUTF8StringEncoding]; '이 예외가 발생했습니다'- [__ NSCFDictionary dataUsingEncoding :] : 인스턴스로 전송 된 인식 할 수없는 선택 자 0xdd7f700 2012-05-01 17 : 53 : 54.589 smartJoinder [ 4773 : 15803] *** 인해 캐치되지 않는 예외 'NSInvalidArgumentException'응용 프로그램 종료, 이유는 : '- [__ NSCFDictionary dataUsingEncoding :] : 인식 할 수없는 선택기 0xdd7f700'' –

+0

이'.... 계속 인스턴스로 전송 *** 먼저 던져 호출 스택 : (0x19b0022 0x1e47cd6 0x19b1cbd 0x1916ed0 0x1916cb2 0x64a78 0x9b6a1e 0x9b6d11 0x9c88fd 0x9c8aef 0x9c8dbb 0x9c985f 0x9c9e06 0x9c9a24 0xb4e65 0x7b85c5 0x7cfcc4 0x7d3e08 0x9805c5 0x9807fa 0x121585d 0x1984936 0x19843d7 0x18e7790 0x18e6d84 0x18e6c9b 0x276d7d8 0x276d88a 0x8ef626 0x24ad 0x2425) 종료라는 난 그냥 테스트 한 exception' –

+0

를 던지고 내 machine이 작동하면'str'을 문자열이 아닌 올바른 형식으로 사전에 전달했는지 확인하십시오. 내가 얻고 – Mat

관련 문제