如何在Swift中创建NSMutableDictionary?

如何在Swift中创建NSMutableDictionary?,第1张

概述我正在尝试创建一个NSMutableDictionary来使用iOS中的密钥链,但是我收到以下错误. Could not find an overload for ‘init’ that accepts the supplied arguments 这是我正在使用的代码: var keychainQuery: NSMutableDictionary = NSMutableDictionary(ob 我正在尝试创建一个NSMutableDictionary来使用iOS中的密钥链,但是我收到以下错误.

Could not find an overload for ‘init’ that accepts the supplIEd arguments

这是我正在使用的代码:

var keychainquery: NSMutableDictionary = NSMutableDictionary(objects: [kSecclassGenericPassword,service,userAccount,kcfBooleanTrue,kSecMatchlimitOne],forKeys: [kSecclass,kSecAttrService,kSecAttrAccount,kSecReturnData,kSecMatchlimit])

知道是什么原因引起的吗?

完整的代码:

import UIKitimport Securitylet serviceIDentifIEr = "MySerivice"let userAccount = "authenticatedUser"let accessGroup = "MySerivice"class KeychainService: NSObject {    class func savetoken(token: Nsstring) {        self.save(serviceIDentifIEr,data: token)    }    class func loadToken() -> Nsstring? {        var token = self.load(serviceIDentifIEr)        return token    }    class func save(service: Nsstring,data: Nsstring) {        var dataFromString: NSData = data.dataUsingEnCoding(NSUTF8StringEnCoding,allowLossyConversion: false)        // Instantiate a new default keychain query        var keychainquery: NSMutableDictionary = NSMutableDictionary(objects: [kSecclassGenericPassword,dataFromString],kSecValueData])        // Delete any existing items        SecItemDelete(keychainquery as CFDictionaryRef)        // Add the new keychain item        var status: Osstatus = SecItemAdd(keychainquery as CFDictionaryRef,nil)    }    class func load(service: Nsstring) -> Nsstring? {        // Instantiate a new default keychain query        // Tell the query to return a result        // limit our results to one item        var keychainquery: NSMutableDictionary = NSMutableDictionary(objects: [kSecclassGenericPassword,kSecMatchlimit])        var dataTypeRef :Unmanaged<AnyObject>?        // Search for the keychain items        let status: Osstatus = SecItemcopyMatching(keychainquery,&dataTypeRef)        let opaque = dataTypeRef?.toOpaque()        var contentsOfKeychain: Nsstring?        if let op = opaque? {            let retrIEvedData = Unmanaged<NSData>.fromOpaque(op).takeUnretainedValue()            // Convert the data retrIEved from the keychain into a string            contentsOfKeychain = Nsstring(data: retrIEvedData,enCoding: NSUTF8StringEnCoding)        } else {            println("nothing was retrIEved from the keychain. Status code \(status)")        }        return contentsOfKeychain    }}
解决方法 对于您的代码,您可以使用NSDictionary:

var keychainObjects = NSArray(objects:"\(kSecclassGenericPassword)",dataFromString)    var keychainValues = NSArray(objects:"\(kSecclass)","\(kSecAttrService)","\(kSecAttrAccount)","\(kSecValueData)")    let keychainquery = NSDictionary(objects: keychainObjects,forKeys: keychainValues)
总结

以上是内存溢出为你收集整理的如何在Swift中创建NSMutableDictionary?全部内容,希望文章能够帮你解决如何在Swift中创建NSMutableDictionary?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1018774.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-23
下一篇2022-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存