NSMutableArray writeToFile:atomically总是在设备上返回NO,但在模拟器上工作正常

时间:2009-11-18 17:22:31

标签: iphone

我在xcode项目的资源中有一个带有Array类型的根的plist文件。在按钮上单击我需要访问此plist并查找plist是否已包含特定项目,如果没有将新项目(NSString)写入plist。

我这样做,如下,

NSMutableArray *array = nil;
NSDictionary *dictionary = nil;
  path = [[NSBundle mainBundle] pathForResource:@"MyPlistName" ofType:@"plist"];
array = [[NSMutableArray alloc] initWithContentsOfFile:path];
dictionary = [self.dictionary objectForKey:@"tag"];

if(![array containsObject:dictionary])
{
    [array addObject:dictionary];
    if(![array writeToFile:path atomically:YES])
    {
        NSLog(@".plist writing was unsucessfull");
    }
     }

这对我在模拟器上有效,但是当我在设备上运行时,writeToFile:atomically方法似乎总是返回NO。

我甚至尝试过使用NSArchiver,即使这似乎也没有返回NO作为返回值

任何人都能说出我做错了什么..

此致

Syed Yusuf

2 个答案:

答案 0 :(得分:6)

您无法写入应用程序的包中,因此您无法在Resources目录中写入plist。一个好方法是在第一次启动时将plist从Resource目录复制到Documents目录,并在将来从那里访问它。

答案 1 :(得分:1)

我完全创建了这个问题,因此您可以理解如何获得可写路径:

How can I get a writable path on the iPhone?

将文档复制到可写路径并在那里进行更改。