带有NSDictionary对象数组的writeToFile问题

时间:2009-12-08 02:59:09

标签: iphone

我正在尝试将一组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类是否阻止我写入文件?谢谢你的帮助。

4 个答案:

答案 0 :(得分:0)

-writeToFile应该可以工作,假设每个对象,无论原始数组中的“深度”如何,都是NSNumber,NSString,NSDate,NSBoolean,NSDictionary或NSArray。如果那里有任何其他类型的对象,它将失败。

答案 1 :(得分:0)

尝试使用以下代码来获取文档目录:

NSString * documentsDirectory = [@"~/Documents/" stringByExpandingTildeInPath];

你正在做的事情应该没问题,但是如果你试图在你的iPhone应用程序的沙箱外写字,我就会遇到文件出现问题。可能是你得到了错误的Documents目录,我之前使用过上面的代码。

答案 2 :(得分:0)

其他人有类似的issueshere,你的可变品种是什么?试试这个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终止它。