在Keychain中保存数组

我试图在钥匙串中保存一个数组,但我无法将数组转换为NSData。 我有我的函数准备保存字符串,但我不知道如何从数组中获取valueData

 func add(key: String, value: AnyObject) { let service = NSBundle.mainBundle().bundleIdentifier! let valueData: NSData! = value.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false) let secItem = [ kSecClass as String : kSecClassGenericPassword as String, kSecAttrService as String : service, kSecAttrAccount as String : key, kSecValueData as String : valueData ] let result: UnsafeMutablePointer = nil let status = Int(SecItemAdd(secItem, result)) if status == Int(errSecDuplicateItem){ self.update(key, newData: value) } else { print("An error occurred with code \(status)") } } 

保存时可以在数组上使用NSKeyedArchiver.archivedDataWithRootObject ,加载时可以使用NSKeyedUnarchiver.unarchiveObjectWithData

您可以使用NSKeyedArchiver和NSKeyedUnarchiver将NSArrays和NSDictionaries转换为数据:

 let array : NSArray = ["one", "two"] let data = NSKeyedArchiver.archivedDataWithRootObject(array) let arrayFromData = NSKeyedUnarchiver.unarchiveObjectWithData(data) as! NSArray