2016-09-14 2 views
-1

나는 다 대다 관계를 가지고 있는데, List은 많은 수의 Items을 가질 수 있습니다. 그런 다음 필요한 엔터티 목록이있는 List 변수가 있습니다. 거기에 문제 없습니다.엔티티를 배열에 넣는 방법 Swift

목록은 tableview이며 사용자가 행을 추가 할 수 있으므로 행을 추가하면 에 Item 관계로 추가됩니다.

그런 다음 List.valueForKey("item")을 사용하여 항목을 가져올 수 있습니다. 그러나 리턴 유형은 AnyObject입니다. NSSet에 캐스트 한 다음 값을 입력하고 배열에 넣는 것보다 더 나은 방법이 있습니까? 즉, 모든 항목 엔티티의 값을 가져 와서 배열에 넣을 수 있습니까?

Pd : 관계가 성립됩니다.

+1

"배열로 반환하는 내용을 어떻게 캐스팅 할 수 있습니까?"배열로 캐스팅합니다. 너 자신의 질문에 대답 했잖아, 그렇지? 그렇지 않다면 문제가 무엇인지 더 설명 할 수 있습니까? – matt

+0

아마 이것처럼'let items = anObject as! [Item]'? – beryllium

+0

@matt List.valueForKey ("item")는 AnyObject를 반환하고 배열로 캐스팅하지 않습니다. 죄송합니다 내 말씨, 이해가 안되는 이유는 둘 이상의 개체를 반환하는 경우 AnyObject를 반환하는 이유입니다. valueForKey를 사용하면 안되기 때문입니까? – Marcel

답변

2

무언가를 무언가에 성공적으로 캐스트 할 수 없습니다. 캐스팅은 단순히 컴파일러에게 진실을 밝히는 한 가지 방법 일뿐입니다. 그 의미는 컴파일러가하는 것 이상을 알고 있다는 것입니다. 하지만 컴파일러에게 진실을 말해야합니다! 컴파일러에 거짓말을하면 런타임에 충돌이 발생합니다.

배열에 캐스팅하면 런타임에 오류가 발생합니다. 이는 이 아니기 때문에 배열이입니다. 정말로 무엇을 캐스팅 할 수 있습니까? 입니다.

+0

내 책에서 캐스팅에 대한 토론을 읽는 데 도움이 될 수 있습니다. http://www.apeth.com/swiftBook/ch04.html#_casting – matt

관련 문제