无法将自定义词典数据写入plist文件

时间:2015-10-15 09:04:59

标签: ios nsdictionary plist

我正在尝试将数据写入我的plist文件中,该文件是在我应用的沙箱中的Library/Caches中创建的,并使用以下自定义帮助方法:

-(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个对象的数组,这些数据是通过网络从服务器端获取的。

更新 我得到了这样的数组:

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

但结果总是失败。

所以我怀疑这个问题来自可能包含无效数据的array。然后我尝试将array硬编码为@[@"key1": @"value1", @"key2": @"value2", @"key3": @"value3"]

使用硬编码数据,flag会返回YES,表示已保存。

所以至少我可以说我提取的数据有问题,但我不知道它在哪里。

更新 这是我非常大的字典数据: enter image description here enter image description here

1 个答案:

答案 0 :(得分:0)

似乎问题是在字典的大小... 我创建了包含30个字典的数组,每个字典有40个项目。我写不出来...... 但!!! ;) 你可以做这样的事情:

Dictionary<string, object> student = new Dictionary<string, object>();
student["name"] = "Alex";

在这种情况下 - 一切正常。