在iOS中,pathForResource为空

Shu*_*puS 1 xcode cocoa-touch objective-c plist ios

无法理解,为什么这行代码返回(null)

// Get path of data.plist file to be created

plistPath = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"plist"];
Run Code Online (Sandbox Code Playgroud)

我需要创建新的plist但是无法理解,是否应该在创建空文件之前获取它的路径..任何想法?

PS我现在项目中只有h,m和没有plist文件.

Dru*_*erB 7

部署后,您不会在捆绑中创建新文件.该捆绑包包含您的应用附带的所有资源和文件.

而是在应用程序的Documents文件夹中创建新文件.要获取文档文件夹路径,您可以使用这样的方法(包含在某些应用程序模板项目中):

- (NSString *)applicationDocumentsDirectory {
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;
    return basePath;
}
Run Code Online (Sandbox Code Playgroud)

然后,您只需附加要使用的文件名即可.

NSString *path = [self applicationDocumentsDirectory];
path = [path stringByAppendingPathComponent:@"data.plist"];
Run Code Online (Sandbox Code Playgroud)

您可能还希望在Documents文件夹中包含一些其他文件夹以用于组织目的.你可以NSFileManager用来做那件事.

  • 只是为了添加这个正确的答案,你也不能改变`mainBundle`中的任何文件.iOS上的应用程序包中的所有文件都是只读的. (2认同)