我想使用KeychainItemWrapper将UUID保存在钥匙串中,所以我在MyKeychainManager.m中添加以下方法:

#define keychain_idenentify @"com.myapp.bundle1"

+ (void)saveUUID:(NSString *)UUID{
  if([MyKeychainManager getUUID].length > 0) {
    return;
  }
  KeychainItemWrapper *keychain = [[KeychainItemWrapper alloc]initWithIdentifier:keychain_idenentify accessGroup:nil];
  [keychain setObject:UUID forKey:(__bridge id)kSecAttrLabel];
}

+ (NSString *)getUUID {
  KeychainItemWrapper *keychain = [[KeychainItemWrapper alloc]initWithIdentifier:keychain_idenentify accessGroup:nil];

  NSString *uuidString = [keychain objectForKey:(__bridge id)kSecAttrLabel];
  return uuidString;
}


但是在将keychain_idenentify更改为com.otherApp.bundle之后,它在


  结果= SecItemAdd((CFDictionaryRef)[自我
  dictionaryToSecItemFormat:keychainItemData],NULL); NSAssert(结果
  == noErr,@“无法添加钥匙串项目。” );


错误是错误-25299

为什么会这样以及如何解决呢?我应该选择哪一种,例如kSecAttrLabel?我将其更改为kSecAttrService,它很有趣,但是我不知道是否还有其他潜在的错误。

任何帮助将不胜感激。

最佳答案

此错误意味着具有该标识符的项目已经存在(https://osstatus.com/search/results?platform=all&framework=all&search=-25299)。尝试从钥匙串中将其删除,然后您的代码应该可以正常工作。

10-08 17:20