2016-03-31 11 views
4

すべてのオブジェクトを1行に追加したい。複数のオブジェクトを配列に追加する方法

let abaddon = Hero(name: "abaddon") 
let ember = Hero(name: "ember") 
let gondar = Hero(name: "gondar") 
let kael = Hero(name: "kael") 
let kunkka = Hero(name: "kunkka") 
let layana = Hero(name: "layana") 
let lucifer = Hero(name: "lucifer") 
let omni = Hero(name: "omni") 
let soul = Hero(name: "soul") 
let wind = Hero(name: "wind") 

ヒーローオブジェクトそうのような:私はこのようないくつかのオブジェクト持って

class Hero { 

    var name: String! 
    var image: UIImage? { 
     return UIImage(named: "\(name)")! 
    } 

    required init(name: String) { 
     self.name = name 
    } 
} 

をそして私は、この配列に入れたい:var heroes = [Hero]()

しかし、私は唯一のことができるようにappendを見ます毎回1つのオブジェクトを置く。どれが、おかげでいただければ幸いに役立ちます

heroes.append([abaddon, ember, gondar]) 

:、単一の行に次のように複数のオブジェクトを追加する方法

heroes.append(abaddon) 

答えて

7

私はこのようにしてみてください:

let heroes = ["abaddon","ember","gondar",etc].map { Hero(name: $0) } 

だから私はちょうど

var heroes = [abaddon, ember, ..., wind] 
+0

これはスマートです。まず名前の配列を宣言してから、リスト上の各名前に対して新しいHeroのインスタンスを1つ含む配列を作成します。 –

+0

イニシャライザが単一の引数以上のものを必要とする場合、これは非常に面倒です。 – BallpointBen

+0

はい、Heroオブジェクトにさらにプロパティがある場合、このソリューションはもはや便利ではありません。 – Khuong

1

を宣言する必要はありませんそれらを配列自身にラップし、appendContentsOfを使用します。

heroes.appendContentsOf([abaddon, ember, gondor]) 
+0

彼は 'Hero'型のオブジェクトを必要としているので、' name'以外の追加のプロパティ/状態を保持している可能性があります。文字列の配列はできません。 –

+0

これらは文字列ではなく(実際には引用符で囲まれていません)、実際の変数名です。 – BallpointBen

+0

私の悪い、それを逃した。 –

7

複数のオブジェクトを追加したくない場合は、なぜ、あなたは可能性があるすべてのオブジェクトに

関連する問題