2017-01-09 3 views
3

わずか二つの異なるのparams名前の2つの方法があるように私は以下のようなURLRequestオブジェクトを使用していますURLSessionで定義されたdataTask(with:completionHandler:)方法のselectorを取得しようとしますが、エラーを取得しています(オーバーロードされたメソッド - 1つのparam、別の用途のURLとしてURLRequestオブジェクトを使用しています):あいまいな使用dataTask(と:completionHandler :)

let dataTaskSelector = #selector(URLSession.dataTask(with: completionHandler:)) 

私は(https://github.com/apple/swift-evolution/blob/master/proposals/0022-objc-selectors.mdで述べた)以下のような異なるアプローチを試してみましたが、それはまた、同じエラーを与えている:

let mySelector = #selector((URLSession.dataTask(with: completionHandler:)) as (URLSession) -> (URLRequest, (Data?, URLResponse?, Error?) -> Swift.Void) -> URLSessionDataTask) 

enter image description here

私は最新のXcodeとswift 3を使用しています。この例ではこれまでの例とよく似た良い文書は見つかりませんでした。助けてください。

ありがとうございます!

+1

@vadianここでは質問が異なり、このエラーなしでこのメソッドのセレクタを作成する方法については何の答えも見つかりませんでした。 – Tushar

+1

@Sriここでは質問が異なります。あなたはそのリンクを指摘するには速すぎました。私はこれを投稿する前に既にそれを行っています。 – Tushar

+0

質問を再開しました。あなたは 'URLSession'の適切なメソッドを呼び出すカスタムセレクタ/メソッドを作成してみませんか? – vadian

答えて

3

このように書くと、selectorと書くことができます。

let selector = #selector((URLSession.dataTask(with:completionHandler:)) as (URLSession) -> (URLRequest, @escaping (Data?, URLResponse?, Error?) -> Void) -> URLSessionDataTask) 

この#selectortutorialは私が解決策を得るのに役立ちます。

+0

グレート!!!おかげでトンNirav :) 私は非常にあなたに近い構文を試していたが、単語 "@エスケープ"を見逃した。 URLの代わりにURLRequestを使用して正確な質問に一致するように構文を変更することもできます。私には関係ありません。私は必要なものを得ました。もう一度感謝します:) – Tushar

+0

@Tushar WelcomeメイトとURLRequestの編集済みの回答:) –

+1

あなたは私の一日を作った! – Tushar

関連する問題