我正在尝试将一组NSDictionary对象写入iPhone(OS 3.0)上的.plist文件。 (当我调用[object class]方法时,它们实际上是NSCFDictionary对象)。我的问题是它不会写入文件。如果我将数组设置为“nil”,它至少会创建空的plist文件,但如果我在数组中有这些对象,则不会这样做。
我的数组是来自JSON HTTP请求的解析响应,如下所示:
{
"title" = "A Movie";
"time_length" = "3:22";
},
{
"title" = "Another Movie";
"time_length" = "1:40";
},
{
"title" = "A Third Movie";
"time_length" = "2:10";
}
创建文件的代码是:
[array writeToFile:[self dataFilePath] atomically:YES];
- (NSString *)dataFilePath {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
return [documentsDirectory stringByAppendingPathComponent:@"data.plist"];
}
我的数组中对象的NCSFDictionary类是否阻止我写入文件?谢谢你的帮助。
答案 0 :(得分:0)
-writeToFile应该可以工作,假设每个对象,无论原始数组中的“深度”如何,都是NSNumber,NSString,NSDate,NSBoolean,NSDictionary或NSArray。如果那里有任何其他类型的对象,它将失败。
答案 1 :(得分:0)
尝试使用以下代码来获取文档目录:
NSString * documentsDirectory = [@"~/Documents/" stringByExpandingTildeInPath];
你正在做的事情应该没问题,但是如果你试图在你的iPhone应用程序的沙箱外写字,我就会遇到文件出现问题。可能是你得到了错误的Documents目录,我之前使用过上面的代码。
答案 2 :(得分:0)
其他人有类似的issues和here,你的可变品种是什么?试试这个code做一个简单的测试写。也许是你的词典内容。
对于NCSFDictionary类,这是框架使用的内部类。有时你会注意到这些变化,如果你有庞大的数组字典等。苹果使用优化的代码,有时候后端存储对象会改变。但它仍然是你的字典。
答案 3 :(得分:0)
不应该是:
{
@"title" = @"A Movie";
@"time_length" = @"3:22";
},
{
@"title" = @"Another Movie";
@"time_length" = @"1:40";
},
{
@"title" = @"A Third Movie";
@"time_length" = @"2:10";
}
不要忘记nil终止它。