我正在使用Locksmith设置我的应用程序,我有以下代码:
let kAttrAccount = "Driver"
class User {
var token: String?
init () {
let account = Locksmith.loadDataForUserAccount(kAttrAccount)
if let account = account {
self.token = account["token"]
print(self.token)
}
}
convenience init (token: String) {
let _ = try? Locksmith.saveData(["token": token], forUserAccount: kAttrAccount)
self.init()
}
}
当我尝试为iOS构建应用时,我在第self.token = account["token"]
行收到错误,收到错误Cannot subscript a value of type '[String : AnyObject]' with an index of type 'String'
。
为了测试,我将以下代码投入Playground并且工作正常:
import UIKit
import Foundation
import Locksmith
let _ = try? Locksmith.saveData(["token": "something"], forUserAccount: "GoDriver")
let account = Locksmith.loadDataForUserAccount("GoDriver")
if let account = account {
account["token"]
}
答案 0 :(得分:1)
问题是account
是[String:AnyObject]
,因此account["token"]
是AnyObject。您无法将AnyObject分配给String?
,这就是您的self.token
。你必须施展它。例如:
let account = Locksmith.loadDataForUserAccount(kAttrAccount)
if let account = account {
if let tok = account["token"] as? String {
self.token = tok
print(self.token)
}
}
以上内容可以简化,但我会向您展示一份非常完整的表格,以便您了解正在发生的事情。