2016-07-25 92 views
1

我followig上线sacRef.takeRetainedValue()此链接https://www.cigital.com/blog/integrating-touch-id-into-ios-applications/SecAccessControl没有成员takeRetainedValue

let sacRef = SecAccessControlCreateWithFlags(kCFAllocatorDefault, 
     kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly, 
     .UserPresence, 
     &error); 

let data: NSData = "sup3r_s3cur3_k3y".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!; 

    var attributes: NSMutableDictionary = NSMutableDictionary(
     objects: [ kSecClassGenericPassword, 
        service, 
        data, 
        kCFBooleanTrue, 
        sacRef.takeRetainedValue() 
     ], 
     forKeys: [ kSecClass, 
        kSecAttrService, 
        kSecValueData, 
        kSecUseNoAuthenticationUI, 
        kSecAttrAccessControl]); 

var status: OSStatus = SecItemAdd(attributes as CFDictionaryRef, nil); 

我得到Value of type 'SecAccessControl' has no member 'takeRetainedValue'

我应该如何保存TouchID保护的数据到钥匙扣?

+1

你试过用'sacRef'替换'sacRef.takeRetainedValue()'吗? - 可能是这个问题相同的问题:http://stackoverflow.com/questions/32023477/swift-secpolicy-does-not-have-a-member-named-takeretainedvalue。 –

回答

0

只要删除它。自Swift 2.3+以来,大多数框架不再需要它。

我只是试图将我的Swift 2.0应用程序之一升级到Swift 2.3。它报告了同样的问题。我只是删除它。它编译和工作就像一个魅力。