func getObjectForKey()

in source/UberCore/Authentication/Tokens/KeychainWrapper.swift [80:98]


    func getObjectForKey(_ key: String) -> NSCoding? {
        var keychainItemData = getKeychainItemData(key)
        
        keychainItemData[MatchLimit] = kSecMatchLimitOne
        keychainItemData[ReturnData] = kCFBooleanTrue
        
        var data: AnyObject?
        let result = withUnsafeMutablePointer(to: &data) {
            SecItemCopyMatching(keychainItemData as CFDictionary, UnsafeMutablePointer($0))
        }
        
        var object: AnyObject?
        
        if let data = data as? Data {
            object = NSKeyedUnarchiver.unarchiveObject(with: data) as AnyObject?
        }
        
        return result == noErr ? object as? NSCoding : nil
    }