Objective c 在iOS 5.0.1中写入plists

Objective c 在iOS 5.0.1中写入plists,objective-c,ios,xcode,ios5,Objective C,Ios,Xcode,Ios5,我正在使用以下代码写入plist: NSMutableArray *d = [[NSMutableArray alloc] initWithContentsOfFile: [[NSBundle mainBundle] pathForResource:@"FavoritesTaxi" ofType:@"plist"]]; [d addObject:self.dataItem]; // write dictionary to plist [d wri

我正在使用以下代码写入plist:

  NSMutableArray *d = [[NSMutableArray alloc] initWithContentsOfFile:
                     [[NSBundle mainBundle] pathForResource:@"FavoritesTaxi" ofType:@"plist"]];
[d addObject:self.dataItem];


// write dictionary to plist
[d writeToFile:[[NSBundle mainBundle] pathForResource:@"FavoritesTaxi" ofType:@"plist"] atomically:YES];
[d release];
我在4个不同的设备(2个模拟器和2个真正的iPhone)上测试了这段代码。 它在以下方面开展了工作: iPhone4.3模拟器 iPhone 5.0模拟器 iPhone4.3真实设备

但它在以下方面不起作用: iPhone 5.0.1真实设备


我真的不知道为什么这个设备会发生这种情况。你知道为什么吗?解决方案是什么?

您不能在设备上修改主捆绑包,您没有这样做的特权。因此不能将plist写入主捆绑包。我怀疑这在4.3设备上起作用,它可能没有给你一个错误


您应该将数据保存到documents目录中,这里有大量代码示例用于获取documents目录的路径

你说得对。所以现在,如果我在我的项目中创建了一个plist,并且我想把它放在documents目录中,我必须选择plist,openutilities,在“location”中,我应该选择“relativetodeveloper目录”?然后,我不再将文件写入mainbundle,而是将其写入documents目录?或者代码中有更多的修改吗?通常,如果您有一个用户可以修改和重新保存的现有plist,您会在第一次运行时将其包含在bundle中,然后在代码中将其复制到documents目录。同样,还有很多样本,或者你可以问一个新问题。