2017-08-27 9 views
-1

これは私の問題です:単純なストラットを持つplistファイルがあります: ルートオブジェクトは配列であり、配列には2つのセクションがあり、それぞれ2対のキー値データを含む辞書です:素早く配列からデータを取り出すには?

enter image description here

と私は件のデータを表示するためのtableViewを作成するつもりですが、私は、配列のうち、コンテンツを取得することはできません。

enter image description here ここでは、私は私のdataArrayを宣言した方法です。

var plistArray = [AnyObject]() 

誰かが私を助けることができますか?

+0

@rmaddyが見事にあなたの質問に答えました。私は上記の2番目のエラー(彼があなたのために解決したもの)を説明したいだけです。 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) 
     } 
    } 
} 

しかし、あなたはPLISTが含まれているものを知っているとき、なぜあなたはAnyObjectを使用していますか?適切なタイプを使用してください。あなたはそれが文字列キーと文字列値を持つ辞書の配列の配列であることを知っています。

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

次に必要なのは、次のとおりです。

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

ありがとう、もう1つ質問がありますか?私がswiftで変数を宣言したいのであれば、 'var array:array'と' var array:[Any]? 'と空の配列を宣言する方法の違いは何ですか? 'var配列:[]'または 'var配列:[]()'が機能しないようです – Neko

+0

[The Swift Programming Language](https://developer.apple.com/library/content)/documentation/Swift/Conceptual/Swift_Programming_Language /)の書籍です。そのような基本的な質問に答えます。 – rmaddy

関連する問題