特定のタイプのオブジェクトを取得するための迅速な方法は何ですか? 例えばここ迅速な型のプロトコルの配列
protocol Fruit {
func setColor()
}
class Orange:NSObject, Fruit {
func setColor() {
}
}
class Apple:NSObject, Fruit {
func setColor() {
}
}
class MyClass {
var fruits:[Fruit]? // get from data base
//here how to get fruits only of type Orange. i.e. Array of oranges
}
一つの方法は、私は新しい配列に追加することができ、その後のループ「のために」入れて、各オブジェクトの種類を確認することができます。
しかし、他にもすてきな方法がありますか?
EDIT:私にとっては作品の下
。他の方法がありますか?あなたは将来の使用のために格納する(まだタイプ[Fruit]
の)フィルタ配列をしたい場合は
for fruit in fruits where fruit is Orange {
}
:
var oranges: [Orange] = []
for orange in fruits {
if let myOrange = orange as? Orange {
oranges.append(myOrange)
}
}
Swiftでセッターとゲッタを書くのは悪い習慣です。公共の物件を使うだけです。それが彼らのためにあります。 – Alexander
NSObjectをNSCodingに準拠させることを計画している場合を除き、NSObjectをサブクラス化する必要はありません。それ以外の場合は、クラスの代わりに構造体を使用する必要があります。 –
ループの命名が悪いと、 'fruit in fruits'の方がはるかに良くなり、' orange orange = fruit 'とすれば?オレンジ{' –