AnyObject不能转换为String

时间:2014-10-18 22:26:23

标签: ios uitableview swift

下面的代码返回错误" AnyObject不能转换为String" :

   override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "Podcast")
    var query = PFQuery(className: "Podcast")
    query.selectKeys(["name", "artist" ])
    query.findObjectsInBackgroundWithBlock {
        (objects: [AnyObject]!, error: NSError!) -> Void in
        if error == nil {
            let name: NSArray = objects as NSArray
            println("objects \(name)")
            cell.textLabel?.text = name["name"]
        }
    }

如果我添加"作为NSString"在"名称旁边["名称"]"。然后我得到错误"类型Int不确认StringLiteralConvertible"

有什么想法吗?我从Parse中提取数据。

3 个答案:

答案 0 :(得分:7)

name["name"]将返回AnyObject?类型的值。它是可选的,因为字典 查找总是返回选项,因为密钥可能无效。你应该有条件地 将其转换为NSString类型,这是一个对象类型,然后使用可选绑定(if let) 在循环不返回nil的情况下将其绑定到变量:

if let myname = name["name"] as? NSString {
    cell.textLabel?.text = myname
}

或者如果你想使用一个空字符串,如果" name"不是有效密钥, nil coalescing operator ??派上用场:

cell.textLabel?.text = (name["name"] as? NSString) ?? ""

答案 1 :(得分:0)

试试这个 cell.textLabel?.text = name["name"] as String

希望它有帮助!

答案 2 :(得分:0)

在Swift 3中

cell.textLabel?.text = name["name"] as! String?