我可以在iPhone应用程序中使用哪些代码来获取和设置我编写的另一个应用程序的设置? (最好使用NSUserDefaults)
答案 0 :(得分:5)
你根本做不到。每个应用程序都安装在自己的文件夹中,并获得自己唯一的用户ID。包含这些设置的文件位于其他应用程序的文件夹中,其权限设置为其他应用程序的权限。访问数据的唯一方法是使用与其他应用程序相同的应用程序标识符,在这种情况下,安装应用程序将覆盖旧应用程序。
编辑:
当问题是使用NSUserDefaults,特别是要求这样做时,给出了这个解决方案。对于更新的问题,提供的钥匙串方法或服务器方法都是合理的。
答案 1 :(得分:5)
你无法用NSUserDefaults解决这个问题。
Keychain虽然在其C-ness中有点麻烦,而且比NSUserDefaults API更有限,但可能允许您完成此任务。如果您可以将应用程序之间需要共享的内容序列化为几个字符串,那么可能值得尝试。
来自iPhone OS 3.x Release Notes:
现在可以在您创建的多个应用程序之间共享Keychain项目。共享项使同一套件中的应用程序更容易更顺畅地进行互操作。例如,您可以使用此功能来共享用户密码或其他可能需要您单独从每个应用程序提示用户的元素。
共享钥匙串项目涉及在应用程序二进制文件中设置正确的权利。使用Xcode,您必须创建一个Entitlements属性列表文件,其中包含应用程序支持的权利。 iPhone开发指南中介绍了创建此文件的过程。有关可以配置的权利的信息,请参阅Keychain Services Reference中的SecItemAdd功能的说明。
在运行时访问共享项目涉及将Keychain Services编程接口与您在开发期间设置的访问组一起使用。有关如何访问Keychain的信息,请参阅Keychain Services Programming Guide。
这是Buzz Anderson's Simple iPhone Keychain Code。您可以使用它将键/值对存储为钥匙串中的字符串。它并不多,但也许总比没有好。有关详情,请参阅Apple's Keychain Programming Guide。
答案 2 :(得分:0)
您可以让一个应用将数据发送到您的服务器,然后另一个应用可以从您的服务器获取数据。
使用NSUserDefaults无法做到这一点,但可以这样做。
答案 3 :(得分:0)
您可以使用共享剪贴板。它不安全,但两个应用程序都可以从同一个剪贴板读写。您只需要创建一个特定于应用程序的UIPasteboard。有关详细信息,请查看Apple开发人员网站上的UIPasteboard类参考。
- 麦克
答案 4 :(得分:0)
你应该按照建议看看UIPasteboard - 你可以创建一个新的粘贴板供你正在创建的应用程序使用(虽然没有什么能阻止其他应用程序使用它们,但人们不太可能这样做)。 UIPasteboard通过电源循环/重启持续存在 - 它将一直存在,直到创建应用程序被删除。
您还可以查看SwapKit库(看起来非常酷):