如何解决如何通过NSUserDefaults共享命令行工具的首选项?
| 我希望有六个命令行工具(用于测试)共享一个包ID,以便它们可以共享一个NSUserDefaults和Library / Caches子文件夹。我可以通过使用硬编码字符串来绕过Library / Caches子文件夹,但是如何设置NSUserDefaults保存到的文件? 在捆绑的应用程序中,由Info.plist中的捆绑ID设置。但是,如何为一组没有Info.plist的命令行工具设置包ID?解决方法
使用
+alloc
和-init
创建一个NSUserDefaults实例,而不是使用+standardUserDefaults
。使用这种方式创建的用户默认实例不会使用与主捆绑包ID对应的默认域创建,因此您需要使用-addSuiteNamed:
方法向其中手动添加默认域。
(更新)对不起,我不好!套件是易失性的,不是持久性的-对于需要读取一组共享默认值的工具很有用,而对于想要设置默认值的应用程序则不是那么有用。对于后者,请看-setPersistentDomain:forName:
。域词典中的键定义了哪些键属于命名的默认域,并且值提供了它们的默认值。
这是一个简短的示例,应创建〜/ Library / Defaults / com.shermpendley.DefaultsTest.plist,并将列出的键/值对存储在其中:
#import <Foundation/Foundation.h>
int main (int argc,const char * argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSUserDefaults *defaults = [[NSUserDefaults alloc] init];
[defaults setPersistentDomain:[NSDictionary dictionaryWithObject:@\"Hello\" forKey:@\"World\"] forName:@\"com.shermpendley.DefaultsTest\"];
[defaults synchronize];
[defaults release];
[pool drain];
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。