2017-06-06 4 views
0

Ich beginne gerade Swift 3.0. Ich versuche, eine CFDictionary zu definieren value.When den Code Lauf-Funktion von „CFDictionarySetValue“ zu setzen, habe ich diesen Fehler: EXC_BAD_ACCESS (Code = 1, Adresse = 0x7e8)Einstellung Wert in CFDictionary mit Swift 3.0

var keyCallBacks = kCFTypeDictionaryKeyCallBacks 
    var valueCallBacks = kCFTypeDictionaryValueCallBacks 
    let query = CFDictionaryCreateMutable(kCFAllocatorDefault, 4, &keyCallBacks,&valueCallBacks) 

    var secClass = kSecClass 
    var genericPassword = kSecClassGenericPassword 
    CFDictionarySetValue(query,&secClass, &genericPassword) 


    var attrCount = kSecAttrAccount 
    var accountStr = "nothing_account" as CFString 
    CFDictionarySetValue(query, &attrCount, &accountStr) 

Antwort

0

Es gibt keine Notwendigkeit, das zu verwenden, umständliche Syntax CF.. collection-Typen erstellen, können Sie das Wörterbuch als Swift Dictionary erklären könnten - müssen Sie es explizit mit Anmerkungen versehen und die Schlüssel zu String überbrücken - und das Wörterbuch CFDictionary zum Beispiel überbrücken:

let query : [String: Any] = [kSecClass as String : kSecClassGenericPassword, 
          kSecAttrAccount as String : "nothing_account"] 

var result : CFTypeRef? 
let status = SecItemCopyMatching(query as CFDictionary, &result)