无法理解,为什么这行代码会返回(null)
?
// Get path of data.plist file to be created
plistPath = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"plist"];
我需要创建新的plist但是无法理解,是否应该在创建空文件之前获取它的路径..任何想法?
PS我现在项目中只有h,m和没有plist文件。
答案 0 :(得分:7)
部署后,您无法在捆绑包中创建新文件。该捆绑包包含您的应用随附的所有资源和文件。
相反,您可以在应用的“文档”文件夹中创建新文件。要获取文档文件夹路径,您可以使用这样的方法(包含在某些应用程序模板项目中):
- (NSString *)applicationDocumentsDirectory {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;
return basePath;
}
然后您只需附加要使用的文件名。
NSString *path = [self applicationDocumentsDirectory];
path = [path stringByAppendingPathComponent:@"data.plist"];
您可能还希望在“文档”文件夹中添加一些其他文件夹以用于组织目的。您可以使用NSFileManager
来执行此操作。
答案 1 :(得分:-2)
是的,您的猜测是正确的 - 您需要先创建一个文件。以下是类引用文档对方法的返回值
所说的内容“返回值 资源文件的完整路径名,如果无法找到该文件,则 nil。“
您可以执行以下操作:
if ( [ [NSBundle mainBundle] pathForResource:@"data" ofType:@"plist"] )
plistPath = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"plist"];
else
// Create new file here
另外,如果要搜索唯一的文件名,可以省略上面方法调用中的类型extenxion。