【发布时间】:2014-06-28 14:39:35
【问题描述】:
我想将以下项目添加到 NSMutableDictionary 但我收到以下错误
could not find an overload for setObject that accepts the following arguments
import Security
var returnDictionary = NSMutableDictionary()
returnDictionary.setObject(anObject: kSecClassGenericPassword, forKey: kSecClass)
当我浏览到 security.h 文件时,显示的属性声明如下:
var kSecClass: Unmanaged<AnyObject>!
var kSecClassGenericPassword: Unmanaged<AnyObject>!
【问题讨论】:
-
您不能使用非托管。您必须立即将其发送至
takeRetained或takeUnretained,然后您才能对其进行任何操作。 -
我还建议您不要尝试在 Swift 中直接使用 NSMutableDictionary。使用 Swift 字典并在完成后将其传递给 Objective-C。
-
谢谢马特,我想用这些在钥匙串中设置密码,我假设 kSecClass 应该作为 kSecClassGenericPassword 的密钥传递给 KeyChain?不是这样吗?
-
好的,我明白你的意思了;您不能使用 AnyObject 作为 Swift 字典中的键。对此感到抱歉。
-
那么,这是否意味着我必须使用字符串作为 kSecClassGenericPassword 的键?如果我这样做,我还能使用 KeyChain 吗?
标签: ios swift nsmutabledictionary