2015-11-24 94 views
1

我試着用以下的Objective-C塊定義關閉:斯威夫特:使用封閉與Objective-C的塊兼容

typedef void(^UPBaseEventAPIArrayCompletion)(NSArray *results, UPURLResponse *response, NSError *error); 

+ (void)getFriendsWithCompletion:(UPBaseEventAPIArrayCompletion)completion; 
在此

UPUserAPI.getFriendsWithCompletion({(friends: [AnyObject], response: UPURLResponse, error: NSErrorPointer) -> Void in 

    }) 

...,並得到了以下錯誤(見圖):

無法將類型'([AnyObject],UPURLResponse,NSErrorPointer) - > Void'的值轉換爲預期參數類型'UPBaseEventAPIArrayCompletion!'

什麼是做到這一點的正確方法是什麼?

+0

好問題。不要添加*請*,*謝謝*,或其他電子郵件通信協議在帖子 – SwiftArchitect

回答

2

試試這個。

UPUserAPI.getFriendsWithCompletion({(friends: [AnyObject]?, response: UPURLResponse?, error: NSError?) -> Void in 
    //code 
}) 

在Objective C代碼中,任何這些參數都可以爲零。所以在Swift中,這些參數必須被定義爲可選項。

+0

我也試過,得到相同的錯誤:/ –

+0

我編輯我的響應將NSErrorPointer更改爲NSError?這是否工作? – 72A12F4E

+0

是啊!錯誤消失了。非常感謝。爲什麼發生這種事? –