每次运行应用程序时,CFUUID都会生成新的UUID

时间:2012-08-16 14:57:15

标签: objective-c keychain

我正在尝试使用UUID弃用方法的替代方法将我的唯一密钥存储在钥匙串中,以便我可以使用它来访问我的在线数据库。

我这样做:

            CFUUIDRef uuid = CFUUIDCreate(NULL);
            CFStringRef generatedUUIDString = CFUUIDCreateString(NULL, uuid);
            CFRelease(uuid);
            NSString* hashKey = [(NSString*)generatedUUIDString autorelease];

            KeychainItemWrapper *keychainItem = [[KeychainItemWrapper alloc] initWithIdentifier:@"MyGAME" accessGroup:nil];
            [keychainItem setObject:hashKey forKey:(id)kSecValueData];

            NSLog(@"%@", [keychainItem objectForKey:(id)kSecValueData]);

            [keychainItem release];

但是当我从钥匙串中检索我的钥匙时,它每次都会返回新值。我正在使用KeychainItemWrapper。每次调用下面的方法时,hashkey都不应该相同吗?我在这里做错了什么?。

谢谢:)

1 个答案:

答案 0 :(得分:1)

您必须将其保存到NSUserDefaults

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setValue:UUID forKey:@"UUID"];

每次你的应用开始时检查它是否已经存在。

if([defaults objectForKey:@"UUID"]){...}