2015-12-02 34 views
3

嘗試在安全鏈中添加項目時保持-50。secItemAdd在swift中保持返回-50錯誤

var query = [String:AnyObject]() 
    query[kSecClass as String] = kSecClassGenericPassword 
    query[kSecAttrAccount as String] = "a" 
    query[kSecValueData as String] = "b" 
    let result = SecItemAdd(query as CFDictionary, nil); 

結果是-50。無法弄清楚爲什麼,需要幫助..提前致謝。

回答

5

我相信kSecValueData鍵的值需要是NSData,而不是String或NSString。嘗試將您的字符串編碼爲數據(例如使用UTF-8編碼)。未測試的片段:

query[kSecValueData as String] = "b".dataUsingEncoding(NSUTF8StringEncoding) 

以供將來參考,錯誤代碼-50對應於errSecParam,其SecBase.h頭文檔作爲含義:「一個或多個參數傳遞到功能是無效的。」如果再次看到此錯誤,請嘗試更改傳入查詢字典的值。

+0

立即生效,非常感謝。 – user1470393

+0

我有關於鑰匙鏈的另一個問題,你能幫忙嗎? http://stackoverflow.com/questions/34053049/seccopyerrormessagestring-gives-use-of-unresolved-identifier-in-swift – user1470393