我们可以从App2访问App1的NSUserDefaults吗?

时间:2016-10-18 11:31:47

标签: ios objective-c iphone nsuserdefaults

我有两个应用程序:App1和App2。

在App1中,我将密钥this.fastColoredTextBox1.Text = "Some Text"; 保存到tokenvalue

我需要在App2中获得与App1中相同的NSUserDefaults。除了使用钥匙串之外,还有可能获得这个价值吗?

2 个答案:

答案 0 :(得分:3)

您必须使用 应用程序组 。这将允许两个应用程序保存到共享的NSUserDefaults和File文件夹。

在Xcode中,单击项目文件夹项目名称 - > DesiredTarget - > 功能 - > 应用程序组,将其打开并创建关联的应用程序组。

对App1和App2执行此过程。

来自文档:https://developer.apple.com/library/content/documentation/General/Conceptual/ExtensibilityPG/ExtensionScenarios.html

// Create and share access to an NSUserDefaults object
NSUserDefaults *mySharedDefaults = [[NSUserDefaults alloc] initWithSuiteName: @"com.example.domain.MyShareExtension"];

// Use the shared user defaults object to update the user's account
[mySharedDefaults setObject:theAccountName forKey:@"lastAccountName"];

答案 1 :(得分:2)

存储数据:

var userDefaults = NSUserDefaults(suiteName: "group.com.company.App")
userDefaults!.setObject("token123", forKey: "tokenvalue")
userDefaults!.synchronize()

要检索数据:

var userDefaults = NSUserDefaults(suiteName: "group.com.company.App")
if let tokenId = userDefaults?.objectForKey("tokenvalue") as? String {
  print("User Id: \(tokenId)")
}