2017-06-17 9 views
2

スウィフトの新機能。私はスウィフトと同じinitWithObjects機能を使用するにはどうすればよいスウィフト4 initWithObject相当物

self.imageArray = [[NSMutableArray alloc] initWithObjects:@{@"name":@"James",@"image":@"1.jpg",@"Address":@"xyz"}, 
        @{@"name":@"Doe",@"image":@"2.jpg",@"Address":@"xyz"},nil]; 

:私はこのようなコードのObjective-Cの部分を持っています。私はextensionを作成してからzip関数を使う必要があることをオンラインで読んでいます。しかし、ドキュメントからは、ジップ関数は2つのシーケンスしか取らないようです。私のimageArrayは3つの異なるキー/値からなる辞書オブジェクトを持っています。

は、私はそれぞれのキーに値を代入する方法がわから以下を試してみましたが、ありません:スウィフトで

extension Dictionary{ 

     for (name, address, image) in zip(names, address, images) { 
     self[name] = names 
     } 
    } 

答えて

1

、我々はおそらくではなく、([]で指定)ネイティブArrayを使用したいですNSMutableArrayオブジェクトです。

var imageArray: [[String: String]]? 

そして:あなたのコードスニペットのスウィフトと同等のDictionaryオブジェクトのスウィフトArrayを使用することです

imageArray = [["name": "James", "image": "1.jpg", "Address": "xyz"], 
       ["name": "Doe", "image": "2.jpg", "Address": "xyz"]] 

は、おそらくカスタムを使用したいと思います、と言いましたオブジェクトタイプ:

struct PersonImage { 
    let name: String 
    let image: String 
    let address: String 
} 

次に、imageArrayをarと定義しますPersonImageの線:

var imageArray: [PersonImage]? 

そして

imageArray = [PersonImage(name: "James", image: "1.jpg", address: "xyz"), 
       PersonImage(name: "Doe", image: "2.jpg", address: "xyz")] 
+0

うわー。解決策を読んで、それは今非常に簡単に思えます。これを知っていたはずです。答えを受け入れます。ありがとう!! – user2511882

関連する問題