2011-02-25 4 views
0

그래서이 편리한 방법을 파일/웹 리소스 에서처럼 으로과 같이 쉬운 속성 목록에서 NSDictionary를 만드는 문제에 대한 해결책으로 작성했습니다. NSXMLParser를 사용하여 을 구문 분석하거나 내 서버가 데이터를 전송하는 방식을 변경할 수는 있지만 (당시에는 내 관심사가 아님) 내 관심사는이 메서드가 명백하게 느리고 충돌하기 쉽습니다. .plist 파일 이름을 결정하기 위해 rand()를 사용하지 마십시오.NSString에서 PLIST로 사전 만들기

이렇게 빨리 만들 수 있습니까? 나는 그 파일이 앱 삭제 사이에 존재하지 않는다는 것을 보장 할 필요가있다. 그러므로/tmp를 사용한다.

+ (NSDictionary *)dictionaryFromPropertyListString:(NSString *)stringToParse 
{ 
    NSLog(@"dictionaryFromPropertyListString: %@", stringToParse); 

    NSString *newFilePath = [NSTemporaryDirectory() stringByAppendingString:@"/Stuff.plist"]; 

    [stringToParse writeToFile:newFilePath atomically:YES encoding:NSASCIIStringEncoding error:nil]; 

    NSDictionary *dictionaryToReturn = [NSDictionary dictionaryWithContentsOfFile:newFilePath]; 

    NSLog(@"returned dictionary: %@", [dictionaryToReturn descriptionInStringsFileFormat]); 

    return dictionaryToReturn; 
} 

답변

3
NSString *error; 
NSPropertyListFormat format; 
NSDictionary* plist = [NSPropertyListSerialization propertyListFromData: [yourString dataUsingEncoding:NSUTF8StringEncoding] mutabilityOption: NSPropertyListImmutable format: &format errorDescription:&error];