これは私の問題です:単純なストラットを持つplistファイルがあります: ルートオブジェクトは配列であり、配列には2つのセクションがあり、それぞれ2対のキー値データを含む辞書です:素早く配列からデータを取り出すには?
と私は件のデータを表示するためのtableViewを作成するつもりですが、私は、配列のうち、コンテンツを取得することはできません。
var plistArray = [AnyObject]()
誰かが私を助けることができますか?
これは私の問題です:単純なストラットを持つplistファイルがあります: ルートオブジェクトは配列であり、配列には2つのセクションがあり、それぞれ2対のキー値データを含む辞書です:素早く配列からデータを取り出すには?
と私は件のデータを表示するためのtableViewを作成するつもりですが、私は、配列のうち、コンテンツを取得することはできません。
var plistArray = [AnyObject]()
誰かが私を助けることができますか?
あなたが適切に各レベルでキャストする必要があります。
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)
}
ありがとう、もう1つ質問がありますか?私がswiftで変数を宣言したいのであれば、 'var array:array'と' var array:[Any]? 'と空の配列を宣言する方法の違いは何ですか? 'var配列:[]'または 'var配列:[]()'が機能しないようです – Neko
[The Swift Programming Language](https://developer.apple.com/library/content)/documentation/Swift/Conceptual/Swift_Programming_Language /)の書籍です。そのような基本的な質問に答えます。 – rmaddy
@rmaddyが見事にあなたの質問に答えました。私は上記の2番目のエラー(彼があなたのために解決したもの)を説明したいだけです。 imgaNameを定義すると、if文の{}の内側にあります。 if文を後にしておくと、imgaNameは消えます。それらは{}内にのみ存在します。 – Mozahler
ありがとう、私の間違いXD – Neko