2016-11-10 13 views
0

JSONからクラスオブジェクトを初期化するメソッドがあります。このような方法:initオブジェクトでない配列オブジェクトを追加する

func getList (dic : Array<[String:AnyObject]>) -> Array<Dog> { 
    let dogs : NSMutableArray = NSMutableArray() 
    for myDic in dic { 
     let dog = Dog.init(dog: myDic) 
     dogs.addObject(dog) 
    } 
    return NSArray(dogs) as! Array<Dog> 
} 

そして、私は問題なくテーブルビューにそれを提示することができます。しかし、今私はリストのページ設定をしたい。メソッドgetListを再度実行すると、initオブジェクトが新しく作成され、古いオブジェクトが置き換えられます。新しいオブジェクトを既存のものに追加するにはどうしたらいいですか?私は同じプロパティを持つ別のオブジェクトを作成したくありません。

+1

だけスウィフト配列を使用し、スウィフトではもう財団のコレクションは必要ありません。配列を入力として使用してNSMutableArrayを使用すると、Arrayに再度変換するのは意味がありません。 – Moritz

答えて

1

追加するメンバ変数を追加する必要があります。だから、:

var dogs: [Dog] = [] 

そして、このようgetListを呼び出す:

dogs += getList(dic: myDic) 

ところで、あなたはあなたのgetListメソッドを作ることができ、このような、はるかに簡単:

func getList(dic: [[String: AnyObject]]) -> [Dog] { 
    return dic.map(Dog.init) 
} 
+0

良い答え。しかし、おそらく 'AnyObject'は' Any''( 'String(s)'、 'Int(s)'やその他の構造体を手動でキャストする必要はありません) –

+0

'AnyObject'は元の質問で定義されています。 'Dog'初期化子が' AnyObject'型の辞書を要求する特別な理由があるかどうかは分かりません。 – ganzogo

+0

しかし、私はおそらく*右* ;-)に同意します – ganzogo

関連する問題