Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios SecAccessControl没有成员takeRetainedValue_Ios_Swift_Keychain_Touch Id - Fatal编程技术网

Ios SecAccessControl没有成员takeRetainedValue

Ios SecAccessControl没有成员takeRetainedValue,ios,swift,keychain,touch-id,Ios,Swift,Keychain,Touch Id,我正在跟踪这个链接 在行sacRef.takeRetainedValue()中,我得到类型为“SecAccessControl”的值没有成员“takeRetainedValue” 我应该如何将受TouchID保护的数据保存到钥匙链中?只需将其删除即可。自Swift 2.3+以来,大多数框架不再需要它 我刚刚尝试将我的一个Swift 2.0应用程序升级到Swift 2.3。它报告了同样的问题。我只是把它拿走了。它的编译和运行很有魅力。您是否尝试过用sacRef替换sacRef.takeRetain

我正在跟踪这个链接

在行
sacRef.takeRetainedValue()
中,我得到类型为“SecAccessControl”的
值没有成员“takeRetainedValue”


我应该如何将受TouchID保护的数据保存到钥匙链中?

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


我刚刚尝试将我的一个Swift 2.0应用程序升级到Swift 2.3。它报告了同样的问题。我只是把它拿走了。它的编译和运行很有魅力。

您是否尝试过用
sacRef
替换
sacRef.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);