2017-08-27 133 views
-1

這裏是我的問題:我有一個plist文件,它有一個簡單的支撐杆: 根對象是一個數組,並且在數組中有2個部分,每個部分都是包含2對鍵值數據的字典:如何從swift中獲取數據?

enter image description here

,我要創建一個的tableView展現DATAS,但我不能讓含量超出了數組:

enter image description here 這裏是我宣佈我的dataArray中:

var plistArray = [AnyObject]() 

有人能幫助我嗎?

+0

@rmaddy已經出色地回答了你的問題。我只想解釋上面的第二個錯誤(他爲你解決了這個錯誤)。當您定義imgaName時,它位於if語句的{}內部。一旦將if語句放在後面,imgaName就會消失。它只存在於{}內。 – Mozahler

+1

謝謝,我的錯誤XD – Neko

回答

1

你需要在每個級別妥善投:

if let innerArray = plistArray[0] as? [AnyObject] { 
    if let dataDic = innerArray[indexPath.row] as? [String:String] { 
     if let imageName = dataDic["Pic"] { 
      cell?.imageView?.image = UIImage(named: imageName) 
     } 
    } 
} 

但爲什麼您使用AnyObject當你知道什麼plist中含有?使用適當的類型。您知道這是一個包含字符串鍵和字符串值的字典數組數組。

var plistArray = [[[String:String]]]() 

然後,所有你需要的是:

if let imageName = plistArray[0][indexPath.row]["Pic"] { 
    cell?.imageView?.image = UIImage(named: imageName) 
} 
+0

非常感謝,我能再問一個問題嗎?如果我想在swift中聲明一個變量,var array:array和var array:[Any]?'之間的區別是什麼,以及如何聲明一個空的數組? var array:[]'or'var array:[]()'似乎不起作用 – Neko

+0

我可以建議你花時間閱讀[Swift Programming Language](https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language /)由Apple提供的書。它會回答這樣的基本問題。 – rmaddy