锁匠不能使用索引类型为'String'的类型'[String:AnyObject]'下标

时间:2016-02-15 15:47:49

标签: ios swift

我正在使用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"]
}

1 个答案:

答案 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)
    }
}

以上内容可以简化,但我会向您展示一份非常完整的表格,以便您了解正在发生的事情。