在 Xcode 项目文件夹中查找 plist 的路径

Posted

技术标签:

【中文标题】在 Xcode 项目文件夹中查找 plist 的路径【英文标题】:Finding path to plist in Xcode project folder 【发布时间】:2011-02-18 20:45:42 【问题描述】:

我的 Xcode 项目的资源文件夹中有一个 plist,但在物理驱动器上,它位于项目的顶层文件夹中。我想从同一个文件中读取和写入。使用 NSBundle 可以正确读取它并且没有问题。我正在使用此代码读取文件路径:

NSString *thePath = [[NSBundle mainBundle]  pathForResource:@"MyFile" ofType:@"plist"];

但我认为 NSBundle 不允许回写,因此当我尝试回写文件时它不起作用。使用以下代码使用应用程序路径创建/更新文件

NSArray *pathArray = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDirectory, YES);
NSString * docsDirectory = [pathArray objectAtIndex:0];
NSString *filePath = [docsDirectory stringByAppendingPathComponent:@"MyFile.plist"];

但现在,我需要写在内部文件上。有什么办法可以访问吗?此外,我尝试提供从我的工作目录到项目目录的路径。它也不起作用。

【问题讨论】:

【参考方案1】:

不是NSBundle不支持写,是ios本身。 iOS 不会让您的应用写入自己的包。

【讨论】:

哦,好的。所以我想没有任何方法可以欺骗 iOS,但我们可以在捆绑包之外的任何地方编写代码? 试图“欺骗”iOS 通常会导致您的应用被 App Store 拒绝。你不能只写包之外的任何地方,有specific directories留给你使用。 NSBundle 不允许写入,但是您可以从包中读取 plist 并将其写入文档目录并从那里获得完全访问权限,对吗? 我不打算欺骗它发布 :) 我找到了替代方案。感谢您提供的所有信息,每一点都是值得的,因为我几乎是新手。 @user25004:正确......但正如 Jim 所说,限制的不是 NSBundle,而是 iOS 本身。

以上是关于在 Xcode 项目文件夹中查找 plist 的路径的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 项目中的两个 info.plist 文件如何工作?

在单个 XCode 项目中使用两个 GoogleService-Info.plist

编译后包含在我的 xcode 项目中的 plist 有多安全?

在我的 XCode 项目中找不到 Cordova.plist

sh 每次构建项目时,如何强制Xcode重建项目中的Info.plist文件?

如何告诉 Xcode 我的 info.plist 和 .pch 文件在哪里