2015-10-14 27 views
0

首先,當我創建了一個自定義類:「價值型‘AnyObject’沒有成員。」 ..錯誤發生試圖給值對象數組中的斯威夫特

class TVInfo { 
    var cast : [String] 
    var name : String 
    var charecterName : String 

init (cast: [String], name: String, charecterName: String){ 

    self.cast = cast 
    self.name = name 
    self.charecterName = charecterName 
} 
} 

然後我試着解析JSON數據

let jsonResult = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers) as! 
     NSDictionary 

let cast = jsonResult.objectForKey("cast") as! NSArray 
      for item in cast 
      { 
      let name = item["name"] as! String 
      let charecterName = item["character_name"] as! String 

      } 
let TV = TVInfo(cast: cast as! [String], name: cast[0].name, charecterName: cast[0].charecterName) 

但我不斷收到錯誤「類型'AnyObject'的值沒有成員'charecterName'」。這很奇怪,因爲第一個常量 - 「名稱」似乎有值,但它與「characterName」在同一個數組中。我怎樣才能正確地賦予characterName常量值?

回答

1

您提取itemnamecharacter_namejsonResult但你試圖通過點符號,其無法訪問屬性忽略的結果。

我猜你想達到這樣的

let jsonResult = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers) as! 
    NSDictionary 

var infoArray = [TVInfo]() 
let cast = jsonResult.objectForKey("cast") as! [[String:String]] 
for item in cast { 
    let name = item["name"]! 
    let charecterName = item["character_name"]! 
    let TV = TVInfo(cast: cast, name: name, charecterName: charecterName) 
    infoArray.append(TV) 
} 
+0

感謝您的快速答覆,但還有比我張貼這就是爲什麼我有「中投」設置爲陣列的那些更多的常量。例如: let network = jsonResult [「network」] as! String let cast = jsonResult.objectForKey(「cast」)as! NSArray 鑄件中的物品 { let name = item [「name」] as!字符串 讓charecterName = jsonResult [「character_name」] as!字符串 } 讓overview = jsonResult [「overview」] as!字符串所以我不確定你提出的方法是否有效。 – user5005376

+0

您的重複循環無用,因爲'name'和'charecterName'的作用域被限制在大括號內。變量不能在循環外部訪問。並且編譯器不知道'cast [0]'是什麼類型「 – vadian

+0

我的意思是說item [」character_name「] as!串。爲什麼我可以提取名稱的數據而不是字符名? – user5005376

相關問題