Копирование словаря ответов JSON в plist - PullRequest
3 голосов
/ 28 ноября 2009

У меня есть словарь, содержащий ответ JSON и файл plist. Я хочу обновить значения в моем файле plist значениями ответа JSON. Как бы я это сделал?

Ответы [ 2 ]

8 голосов
/ 28 ноября 2009

это то, что я сделал, я сейчас работаю над этим, но я добираюсь туда:


JSON в словарь:

NSString *jsonString = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];
//NSLog(@"%@",jsonString);

NSArray *result = [jsonString JSONValue];

for(NSDictionary *dictionary in result){
    return dictionary; //if you are getting more then one row, do something here
}

Сохранение словаря:

id plist = plistDict;

NSString *errorDesc;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *plistPath = [documentsDirectory stringByAppendingPathComponent:@"Data.plist"];
NSLog(@"%@",plistPath);

NSData *xmlData;
NSString *error;

xmlData = [NSPropertyListSerialization dataFromPropertyList:plist
                                                     format:NSPropertyListXMLFormat_v1_0
                                           errorDescription:&error];
if(xmlData) {
    if ([xmlData writeToFile:plistPath atomically:YES]) {
        NSLog(@"Data successfully saved.");
    }else {
        NSLog(@"Did not managed to save NSData.");
    }

}
else {
    NSLog(@"%@",errorDesc);
    [error release];
}
}

Если вы хотите обновить значения, я бы сказал, что вы должны открыть список, поместить его в словарь, обновить значение в словаре и снова сохранить словарь в списке.

Надеюсь, это поможет.

1 голос
/ 06 июня 2012

Если вы работаете под Mac OS X 10.7 или iOS 5, существует базовый класс NSJSONSerialization, который будет читать / записывать файлы JSON. Преобразовать JSON в plist будет так же просто, как: (подразумевается, что вы включили ARC или GC)

NSString *infile = @"/tmp/input.json"
NSString *oufile = @"/tmp/output.plist"

[[NSJSONSerialization JSONObjectWithData:[NSData dataWithContentsOfFile:infile]
                                 options:0
                                   error:NULL] writeToFile:oufile
                                                atomically:YES];

Однако преобразование из plist в JSON будет более проблематичным, поскольку объекты NSDate и NSData не могут появляться в JSON. Вам может понадобиться проверить содержимое файла и сохранить NSData и NSDate по-другому (например, NSData как строки Base-64 и NSDate как их UNIX-раз)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...