gpt4 book ai didi

macos - 如何通过命令行工具的 NSUserDefaults 共享首选项?

转载 作者:行者123 更新时间:2023-12-02 08:54:55 26 4
gpt4 key购买 nike

我想要六个命令行工具(用于测试)共享一个包 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;
}

关于macos - 如何通过命令行工具的 NSUserDefaults 共享首选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5680738/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com