2016-07-19 3 views
2

각 수준에서 기능을 추가하는 일부 클래스를 통해 약속을 캐스케이드하려고합니다.iOS (ObjC) PromiseKit - 약속 내의 반환 약속

exc_bad_access (code=1 address=0x10)

:

+ (AnyPromise *) method { 
    return [SomeClass whichReturnsPromise] 
    .then(^(id obj){ 
     // do stuff 
     return obj; 
    }); 
    } 

불행하게도이 코드는 두 번째 줄에 오류를 던지고있다 : 유래

(주 단지 return [SomeClass whichReturnsPromise]를 호출하면 잘 작동) I가 흐르고 한 답변 위의 코드 (javascript에서 작동하는)의 많은 변형을 시도했지만 동일한 오류가 계속 발생합니다. 이 문제를 어떻게 해결할 수 있습니까?

[self wait].then(^{ 
    return [SomeClass whichReturnsPromise]; 
}).then(^(id obj) { 
    return obj; 
}); 

내가 알고있는 다음 스위프트,하지만 당신은 AnyPromise이있는 경우 당신은 Promise<T> 체인에서 사용할 수 있습니다 :

답변

2

약속을 반환하기 전에 [SomeClass which ReturnsPromise]nil을 반환하기 전의 중단 사례가 표시됩니다. 값이 nil 인 약속을 되 돌리도록 변경했습니다. 이제 작동합니다.

0

는 테스트하지 않고, 나는 다음과 같은 일을해야 생각

someSwiftPromise().then { _ -> AnyPromise in 
    // provided by `pod PromiseKit/SystemConfiguration` 
    return SCNetworkReachability() 
}.then { (obj: AnyObject?) in 
    // AnyPromise always resolves with `AnyObject?` 
} 
+0

'[self wait] '클래스는 무엇입니까? 나는 커스텀 클래스에서 내 것을 부른다. – smileham

+0

아, 그러면 세미콜론'; '을'return [SomeClass whichReturnsPromise]'에 추가하면 어떻게 될까요? 같은 오류가 발생합니까? – fuzz

+0

'.then' 절을 빼면 어떻게 될까요? 오류 없음. – smileham