2015-10-15 1 views
0

Я пытаюсь записать данные в мой plist файл, который был создан в Library/Caches в песочнице моего приложения, с помощью следующего метода пользовательских хелперов:Не удался записать мои пользовательский словарь данных в PLIST файл

-(void)saveStatusesToPlist:(NSArray *)array 
{ 
    NSDictionary *dict = @{@"data": array}; 

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); 
    NSString *cachesDirectory = [paths objectAtIndex:0]; 

    NSString *plistPath = [cachesDirectory stringByAppendingPathComponent:filepath]; 
    NSLog(@"PATH: %@", plistPath); 

    NSFileManager *manager = [NSFileManager defaultManager]; 
    if (![manager fileExistsAtPath:plistPath]) { 
     BOOL isCreated = [manager createFileAtPath:plistPath contents:nil attributes:nil]; 
     NSLog(@"Result:%@", isCreated? @"Success": @"Failed"); 
    } 
    BOOL flag = [dict writeToFile:plistPath atomically:YES]; 
    NSLog(@"Write result:%@", flag? @"Success": @"Failed"); 
} 

Пожалуйста, обратите внимание что параметр: array представляет собой массив из многих объектов NSDictionary, преобразованных из данных JSON, которые были получены с серверной стороны по сети.

UPDATE: я получил массив как это:

NSArray *array = [result objectForKey:@"array"]; 

Но результат был всегда проваливались.

Итак, я сомневался, что проблема связана с array, которая может содержать недопустимые данные. Затем я попробовал hardcode array, чтобы найти @[@"key1": @"value1", @"key2": @"value2", @"key3": @"value3"].

С твердыми данными данные flag возвращают YES, что означает, что оно было сохранено.

Так что, по крайней мере, я могу сказать, что мои извлеченные данные имеют некоторые проблемы, но я не знаю, где это.

UPDATE: Вот мой словарь данных, который является очень большим: enter image description here enter image description here

+0

Я могу вставить один из экземпляров моей модели в словарь здесь, если необходимо – Boris

+0

Он отлично работает в моем проекте ... Я попытался написать свой собственный json-массив ... Не могли бы вы вставить одну из своих моделей? – Che

+0

@Che мой один словарь довольно большой, который содержит много объектов, поэтому я вставляю скриншоты здесь ... – Boris

ответ

0

Похоже вопрос в размер словаря ... Я создал массив с 30 словарей с 40 пунктов по каждому. И я не могу написать это ... НО !!! ;) Вы можете сделать что-то вроде этого:

NSData* data = [NSKeyedArchiver archivedDataWithRootObject:dict]; 
BOOL flag = [data writeToFile:plistPath atomically:YES]; 

NSData* savedData = [NSData dataWithContentsOfFile:plistPath]; 
NSDictionary* unarchivedDict = (NSDictionary*) [NSKeyedUnarchiver unarchiveObjectWithData:savedData]; 

В данном случае - все работает отлично.