2016-11-20 1 views
0

나는 일련의 Detail 개체를 보유하고있는 NSSet을 가지고 있습니다. 각 Detail 객체에는 .name 및 .text 속성이 있습니다. .name = "memo"인 집합에서 하나의 특정 Detail을 찾고 그 .text 속성에있는 내용을 확인하고 싶습니다.Swift에서 속성 이름별로 개체 집합에서 하나의 개체 가져 오기

어떻게해야합니까?

(.indexOf 내가 지금은 찾아 어떻게 든 .MAP, 또는 사용해야 할 경우하지 않습니다. 작동하지 않습니다 직접 액세스하는 수단이 있다면 그 스위프트의 특정 객체입니다.) 명확성을 위해

, Core Data를 사용하고 있으며 각 "Event"객체는 많은 Detail 객체와 관계가 있습니다. 세부 정보의 NSSet은 주어진 이벤트에서 내리는 집합입니다.

상세 개체가 속성 내가 활성 "이벤트"에서 상세 정보를 얻을

는 .text

.name을

있습니다

다시 여기처럼 보이는 무엇 이렇게 :

var someDetails: NSSet()? 
someDetails = event.details! 

이제 해당 이벤트에 대한 세부 정보가 있습니다.

이제 .name = "memo"인 detail 개체에 액세스하고 .text 속성이 무엇인지 확인하고 싶습니다.

세부 사항을 직접 작성하는 것은 세부 관리 대상 오브젝트를 작성하고 속성을 할당 한 후 세트에 추가하는 것만 큼 쉬웠습니다. 세트에 필요한 모든 객체가있을 때, 나는 그것을 event.details에 할당하고 코어 데이터에 다시 저장했습니다. 나는 개인의 "세부 사항"에 접근하는 것이 훨씬 더 어려울 것이라고 꿈꿨다.

다음 직접 액세스를 위해 무엇을해야할지 모르겠습니다.

집합을 반복하면서 각 개체를보고 원하는대로 꺼내려고합니까?

감사합니다.

답변

1

당신은 그러나 당신이에 대한 NSSet 질문에 대답합니다, 대신 NSSetSet 사용해야합니다.

난 당신이

class Detail: NSObject { 
    let name: String 
    let text: String 

    init(name: String, text: String) { 
     self.name = name 
     self.text = text 
    } 
} 

같은 클래스와 당신이 name"a"있는 모든 느릅 나무를 원하는 지금이

let details = NSSet(array: [ 
    Detail(name: "a", text: "1"), 
    Detail(name: "b", text: "2"), 
    Detail(name: "c", text: "3"), 
    Detail(name: "d", text: "4")] 
    ) 

같은 NSSet을 상상하고 쓰기

let results = details.flatMap { $0 as? Detail }.filter { $0.name == "a" } 

마지막으로 인쇄하십시오.

for result in results { 
    print(result.text) 
} 
+0

정확히 내가 찾고있는 것. 감사! – Kent