下面的代码返回错误" 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中提取数据。
答案 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?