尝试从应用扩展程序访问钥匙串时,获取“无钥匙串可用”错误

我正在制作IOS自定义键盘扩展。 默认情况下,键盘的function有限,但当用户从主父应用程序购买完整版本时,键盘会解锁缺少的部分。

要检查用户是否购买了应用程序,我尝试使用此库将Bool存储在IOS钥匙串中。

  let IAPKeychain = Keychain(service: "com.roymunsonstudios.CopypastaKeyboard") var purchase: Bool = true let purchaseData = NSData(bytes: &purchase, length: sizeof(Bool)) try! IAPKeychain.set(purchaseData, key: identifier) 

然后我尝试从viewDidLoad方法中的键盘扩展中访问keychain,如下所示:

 let IAPFetch = Keychain(service: "com.roymunsonstudios.CopypastaKeyboard.Copypasta") print("Just finished creating keychain instance") do { let purchaseStatusData = try IAPFetch.getData("com.roymunsonstudios.CopypastaKeyboard.FullVersionKeyboard") } catch is ErrorType { print("Error fetching data") } 

但是,每当我尝试这样做时,我会收到以下错误:

 OSStatus error:[-25291] No keychain is available. You may need to restart your computer. 

我不确定是什么问题。 我在扩展程序和主应用程序中打开了钥匙串共享,并且每个目标中都有相同的钥匙串组名称(钥匙串组名称是扩展程序的包ID)。

为什么会出现此错误?