2014-10-18 100 views
1

下面的代碼返回錯誤「AnyObject是無法轉換爲字符串」:AnyObject是無法轉換爲字符串

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提取數據。

+1

這裏有一些混淆。如果'name'是一個'NSArray',爲什麼你把它當成一個字典'name [「name」]'?你用'Int'索引數組而不是字符串。 – vacawama 2014-10-18 23:30:22

回答

5

name["name"]將返回類型爲AnyObject?的值。這是可選的,因爲字典 查找始終返回可選項,因爲密鑰可能無效。你應該有條件 它轉換爲類型NSString這是一個對象類型,然後使用可選的結合(if let) 綁定,爲的情況下的變量在那裏,循環起來不返回nil

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

,或者你想用一個空字符串,如果「名稱」不是一個有效的鍵,零合併運算??就派上用場了:

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

試試這個 cell.textLabel?.text = name["name"] as String

希望它能幫助!

0

在斯威夫特3

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