특정 유형의 개체를 신속하게 가져 오는 가장 좋은 방법은 무엇입니까? 예컨대 여기신속한 형식 프로토콜 배열
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
}
한 가지 방법은 내가 새로운 배열에 추가 할 수 있습니다 다음 루프 "에 대한"넣어 각 개체의 유형을 확인 할 수 있습니다.
하지만 할 수있는 다른 방법이 있습니까?
편집 :
아래 작품. 다른 방법이 있습니까? 향후 사용을 위해 저장 (정지 유형 [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에서 세터와 getter를 작성하는 것은 좋지 않습니다. 그냥 공공 재산을 사용하십시오. 그게 그들이 그곳에있는 이유입니다. – Alexander
또한 NSCoding을 따르지 않으려면 NSObject를 서브 클래스 할 필요가 없습니다. 그렇지 않으면 클래스 대신 struct를 사용해야합니다. –
루프의 이름이 잘못 지정되면 '과일의 과일'에 더 좋을 것입니다. 오렌지 {' –