4

私は次のようにObjective-Cに関数を持っています

- (void) fetchChannelListForWatch:(void (^)(NSDictionary *))callback

次のように、迅速なコールバック クロージャーをこれに渡したいと思います。

fetchChannelListForWatch(replyHandler)

ここで、replyHandler はタイプのクロージャです

replyHandler: ([String : AnyObject]) -> Void)

エラーが表示されます:

Cannot invoke 'fetchChannelListForWatch' with an argument list of type '(([String : AnyObject]) -> Void)'

replyHandler は WatchConnectivity デリゲートから来ています

func session(session: WCSession, didReceiveMessage message: [String : AnyObject], replyHandler: ([String : AnyObject]) -> Void)

したがって、replyHandler のタイプを変更することはできません。

パラメータを使用して迅速な閉鎖を渡すにはどうすればよいですか

replyHandler: [String: AnyObject] -> () 

パラメーターを持つブロックを取る目的の C 関数に

- (void) fetchChannelListForWatch:(void (^)(NSDictionary *))callback

あなたの助けは大歓迎です!

4

2 に答える 2

2

NSDictionary のブリッジ型は

[NSObject: AnyObject]

あなたの場合、に更新する必要がありreplyHandlerます

replyHandler: ([NSObject : AnyObject]) -> Void)

関連ドキュメントはこちらhttps://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/WorkingWithCocoaDataTypes.html

于 2015-06-24T10:32:48.547 に答える