文件夹中的pList - 需要与项目一起使用

时间:2011-08-23 21:10:54

标签: objective-c macos

目前我只能访问我的pList,如果它在我的user / documents文件夹中,我怎样才能改变项目的pList部分(我正在使用Xcode 4),我正在使用命令行来测试理论,但我想将其纳入应用程序。我是否需要将其添加到构建中?

//=================GET FILE PATH FOR PLIST
NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); //1  Create a list of paths.
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"mypList.plist"]; //3

NSFileManager *fileManager = [NSFileManager defaultManager];

if (![fileManager fileExistsAtPath: path])
{
    NSString *bundle = [[NSBundle mainBundle] pathForResource:@"mypList" ofType:@"plist"]; //5

    [fileManager copyItemAtPath:bundle toPath: path error:&error];   }
}


 //==================READ PLIST
NSMutableDictionary *savedStock = [[NSMutableDictionary alloc] initWithContentsOfFile: path];

NSLog(@"%@", savedStock);

[savedStock release];    

2 个答案:

答案 0 :(得分:1)

如果您想让它成为应用程序的一部分,最好的方法是将文件复制到项目中。

答案 1 :(得分:1)

如果您只是想在应用中阅读它,请将其添加到项目中,然后它将成为捆绑包的一部分(因此无论何处启动.app文件,您都应该能够在代码中找到它)。

[[NSBundle mainBundle] bundlePath];

应该大致指向正确的方向......

如果您希望回写它,那么您应该让应用程序测试它是否存在于应用程序库文件夹中(user / Library / your_application_name - OSX库中有方法可以找到库文件夹)如果它没有不存在然后从捆绑中加载它并在退出/退出/保存/更改等时将其写回相应的应用程序库文件夹。

这也可能有帮助......

NSString *libraryFolderPath = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject];