Objective-C arrayWithPlist (это уже в NSString) - PullRequest
1 голос
/ 29 октября 2010

У меня есть NSString, которая уже содержит pList.

Как мне превратить его в NSArray?(БЕЗ сохранения его на диск, только чтобы загрузить его обратно с помощью arrayWithContentsOfFile, а затем удалить его.)

Где находится метод make arrayWithPlist или arrayWithString?(Или как бы я сделал свой собственный?)

 NSArray *anArray = [NSArray arrayWithPlist:myPlistString];

1 Ответ

5 голосов
/ 29 октября 2010

Вы хотите использовать NSPropertyListSerialization:

NSData *data = [plistString dataUsingEncoding:NSUTF8StringEncoding];
NSError *error = nil;
NSArray *plist = [NSPropertyListSerialization
                  propertyListWithData:plistData
                  options:/*unused*/0
                  format:NULL
                  error:&error];
if (!plist) {
    NSLog(@"%s: Failed to create plist: %@",
          __func__, error ?: @"(unknown error)");
}

Этот конкретный метод был представлен в iOS 4.0 / Mac OS X 10.6 До этих выпусков вы должны использовать:

NSData *data = [plistString dataUsingEncoding:NSUTF8StringEncoding];
NSString *errorText = nil;
NSArray *plist = [NSPropertyListSerialization
                  propertyListFromData:plistData
                  mutabilityOption:NSPropertyListImmutable
                  format:NULL
                  errorDescription:&errorText];
if (!plist) {
    NSLog(@"%s: Failed to create plist: %@",
          __func__, errorText ?: @"(unknown error)");

    /* Part of the reason this method was replaced:
     * It is the caller's responsibility to release the error description
     * if any is returned. This is completely counter-intuitive.
     */
    [errorText release], errorText = nil;
}
...