是否有可能复制不同plist进入应用程序包码明智吗?
-
16-09-2019 - |
题
我的问题是上述标题,但我会把它写在这里再一次
是否有可能复制不同plist进入应用程序包码明智的??
这实际上是一位有关的在我的前一问题;) 创建一个词典的财产列表的编程方式
但因为我可以写出来的plist(和测试如果我做错了什么)我想知道如果我可以复制我的书面文件
[testBook writeTofile:@/Users/jack/testbook2.plist" atomically:NO];
我应用程序包 在代码 (因此,它可以从这里读
NSString *path = [[NSBundle mainBundle] bundlePath];
NSString *dataPath = [path stringbyAppendingPathcomponent:@"testbook2.plist"];
另一个替代方案是良好的,以及例如如果我可以读我的plist直接从另外的路径,而不是mainBundle
解决方案
物理,是的这是可能的时候。
不,不要这么做!
好吧...复制东西进入你的应用程序包,是坏的,应束是不是你设置保持或数据。你应该想想你的程序束以只读。你应该这样做有几个原因:
- 虽然大多数的时间上的用户Mac OS X系统具有权写入一个应用程序,有时他们没有。想想谁是孩子不使用管理帐户或实验室部署在学校。
- 它将无效codesigning.如果你签上你的应用程序,这将会改变的签名,并打破的协同设计,造成各种奇怪的问题(丢失任何权限的防火墙的应用程序,告知用户应用程序已改变,并且要求他们的钥匙串的权限再等)。在未来,这也可弹出各种各样的警告,因为篡改一个程序是一个很大的安全红色标志。
- 它不会的工作。这可能不是一个问题,但是如果你每次打算使用这个代码在iPhone上的应用程序包的沙盒只读的
正确地把这种东西是成为一个子文件夹中的应用的支持文件夹
其他提示
我不知道究竟你在做什么,但根据您的应用程序,您可能需要使用应用程序支持目录:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);
if ([paths count] > 0) {
NSString *path = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"App Name"];
// Create the directory if it doesn't exist, etc.
} else {
NSLog(@"Fail!");
// ...
}
不隶属于 StackOverflow