iPhone SDK - plist没有被复制到模拟器

时间:2010-10-02 22:15:15

标签: iphone ios-simulator plist

我在XCode&中创建了一个pList(myData.plist)。填充它,但是当我运行程序时,它没有被复制到iphone模拟器目录。因此,我无法从中读到。我已经记录了文件名,它似乎指向了正确的位置,那里没有plist文件(在Finder中确认)

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectoryPath = [paths objectAtIndex:0];
NSString *pListFileName = [documentsDirectoryPath stringByAppendingPathComponent:@"myData.plist"];
NSLog(pListFileName);
NSFileManager *fileManager = [NSFileManager defaultManager];

if ([fileManager fileExistsAtPath: pListFileName]) {
    self.pList = [[NSMutableDictionary alloc] initWithContentsOfFile:pListFileName];
  //code for reading data in plist
}

1 个答案:

答案 0 :(得分:2)

两件事:

  • 确保将其标记为包含在目标的包中。

右键单击Xco​​de中项目导航器中的文件,然后选择“获取信息”。在“目标”标签中,确保选中目标复选框。

这将确保将文件复制到项目的包中。

  • 然后,您必须将其解压缩到捆绑包,并在运行应用程序时将其复制到Documents目录。如果您检查plist是否在文档目录中,请将其从捆绑包中复制。

代码,但没有任何必要的错误检查:

if (![fileManager fileExistsAtPath: pListFileName]) {
    //Copy the file from the app bundle.
    NSString * defaultPath = [[NSBundle mainBundle] pathForResource:@"myData" ofType:@"plist"];
    [fileManager copyItemAtPath:defaultPath toPath:pListFileName error:NULL]
}

self.pList = [[NSMutableDictionary alloc] initWithContentsOfFile:pListFileName];

同样,我删除了任何错误检查,但您应该将其包含在生产代码中。