ソリューション1(これはswiftiest方法です):
を
//if you want to keep adding to the old array
allItems += allPeople.flatMap{$0.items}
//if you want to add into a new array
let newArray = allItems + allPeople.flatMap{$0.items}
// Using 'map' won't work:
allItems = allItems + allPeople.map{$0.items} //error: binary operator '+' cannot be applied to operands of type '[String]' and '[[String]]'
我々は+
が処理方法を知らない[String]
から[String]]
を追加しているので、上記のコードは動作しません、読んで:それは内配列を印刷している
let john = Person()
john.items = ["a", "b", "c"]
let jane = Person()
jane.items = ["d", "e", "f"]
allPeople.append(john)
allPeople.append(jane)
print(allPeople.map{$0.items}) // [["a", "b", "c"], ["d", "e", "f"]] <-- [[String]]
// and obviously can't be added to [String]
アレイ。だから私たちはもう一歩を踏み出す必要があります。
let mapped = allPeople.map{$0.items}
print(Array(mapped.joined())) // ["a", "b", "c", "d", "e", "f"]
我々はmap
を使用したい場合ので、我々はまた、joined
対処方法2使用する必要があります(非常にswiftyないのが、私はちょうどflatMap
は基本的にjoin
+ map
であることを説明したかった)
let newJoinedMappedArray = allItems + Array(allPeople.map($0.items).joined())
「let allItems = allPeople.flatMap {$ 0.items}」についてはどうですか? – sbooth
あなたはそれらを一緒に追加/追加していません。フラットマップの使い方は良いですが。私は間違っていた 'map'を使っていました... – Honey
あなたが達成しようとしていること、試したこと、現在の結果(問題)が何であるかを記述してください。 – shallowThought