2014-12-16 3 views
3

개체가 특정 클래스의 멤버인지 신속하게 확인하고 싶습니다. 그러나 클래스는 다른 객체의 속성으로 저장됩니다.이 경우 RESTKit 프레임 워크의 클래스 인 RKRequestDescriptor입니다. RKRequestDescriptor에는 objectClass 속성에 클래스 객체를 저장하는 속성이 정의되어 있습니다.신속한 클래스 비교

그래서 목표 - C에서 내가 좋아하는 뭔가를 :

"OBJ"에 대해 테스트하는 몇 가지 임의의 객체를하고이 RESTKits RKObjectManager의 서브 클래스이기 때문에, requestDescriptors와 배열이
for (RKRequestDescriptor *thisDescr in self.requestDescriptors) { 
    if ([thisDescr objectClass] == [obj class]) { 
     ... 

.

이제 위의 목적 -c 코드를 "번역"하는 데 어려움을 겪고 있습니다. 나는 시도했다 :

 for var thisDescr:RKRequestDescriptor in self.requestDescriptors { 
     if let newObj = obj as thisDescr.objectClass { 

그것은 작동하지 않는다. Xcode에서 오류가 발생합니다. 그것으로 시작하지 않습니다 "와 같은"에 - 루프 (". 문에서 예상되는 상태)이 너무 :. 아직

var thisDescr:RKRequestDescriptor? 
    for index in 0..<countElements(self.requestDescriptors) { 
     thisDescr = self.requestDescriptors[index] as? RKRequestDescriptor 
     if let newObj:AnyObject = obj as? thisDescr.objectClass { 

하지만 운이가 생각보다 정말 어렵다" "번역 신속한 :-(객관적인 C

+0

http://stackoverflow.com/questions/24101450/how-do-you-find-out-the-type-of - 피사체 - 신속한 – 68cherries

+0

고마워요.하지만 그 질문을 보았습니다. 그러나 그것은 나에게 도움이되지 않았습니다. 나는 임의의 clas와 비교하기를 원합니다. 변수는 변수에 저장됩니다. 아니면 무엇인가 내려다보고 있습니까? –

+0

Objective-C를 Swift로 변환하는 것이 어렵지 않습니다. 사실, 기계가 그것을 할 수 있습니다. 그것은 단순한 규칙의 순수한 적용입니다. 하지만 신속한 구문으로 말해야합니다. 네가 좋아하는 멍청한 말만 할 수는 없어. – matt

답변

3

[thisDescr objectClass] == [obj class]의 신속한 당량이다

thisDescr.objectClass === obj.dynamicType 
+0

감사합니다, 그것은 챔피언처럼 작동합니다. 루프의 다른 문제에 대해서는 "var"키워드를 생략하면 작동한다는 것을 알았습니다. swift는이를 for..in 루프에서 변수로 암시 적으로 처리하므로 의미가 있습니다. –

+0

@alexdafranca 그래, 그게 내가 "신속한 구문으로 말하기"라고 말했던 때였 다. – matt

+0

@matt 물론 구문에 익숙해 져야합니다. 불행히도 시간이 많이 걸리는 "시도와 오류"가 많은 순간인데, 이러한 것들은 즉시 내게 논리적이지 않습니다. 지금까지는 다른 모든 장소, 신속한 암시 적이며 우리를 키 스트로크 (및 오타 또는 특히 : 오류를 저장하기 위해 현명하려고합니다!) –