2017-03-04 3 views
0

私はiosプログラミングで初心者です。そして今、私は次のような奇妙な状況のために説明することはできません。swift 3 AFNetworkingのpost()を呼び出すときの関数パラメータの非常に奇妙な問題

let url: String = isFavorite ? "1.1/favorites/create.json" : "1.1/favorites/destroy.json" 
post(url, parameters: params, progress: nil, success: { (task, response) -> Void in 
      let dictionary = response as! NSDictionary 
      let tweet = Tweet(dictionary: dictionary) 
      success(tweet) 
     }, failure: { (task, error) -> Void in 
      print("like tweet error: \(error.localizedDescription)") 
      failure?(error) 
     }) 

それは常に例外をスロー:私は(URL値を直接代わりに変数を渡す、以下のようにしようとすると、

like tweet error: Request failed: not found (404) 

は、それはOKです):エラーが404である

post("1.1/favorites/create.json", parameters: params, ... 

ので、ので、多分URLがポスト()メソッドによって認識されていない、私は実際にそれらの間の違いが何であるかを知らないのですか?許可されたURLにURL文字列を変換する

+0

も何が起こるかを見るためにpost( "1.1/favorites/destroy.json"、parameters:parms、..)?を渡すと動作しますか? – DiegoQ

+0

@DiegoQ:はい、それは常に一定値で動作します – doannx

答えて

0

てみ

var url: String = isFavorite ? "1.1/favorites/create.json" : "1.1/favorites/destroy.json" 
url = url.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) 
post(url, parameters: params, progress: nil, success: { (task, response) -> Void in 
     let dictionary = response as! NSDictionary 
     let tweet = Tweet(dictionary: dictionary) 
     success(tweet) 
    }, failure: { (task, error) -> Void in 
     print("like tweet error: \(error.localizedDescription)") 
     failure?(error) 
    }) 
+0

ありがとう@DiegoQしかし、何も違いはありません:( – doannx

0

これを試してみてください。:)

let url: URLStringConvertible = isFavorite ? "1.1/favorites/create.json" : "1.1/favorites/destroy.json" 
+0

URLStringConvertibleはAlamofireのものですよね?しかし、Alamofire(デフォルトバージョン)をインストールすると、 AlamofireソースコードTT: '' 'Pods/Alamofire/Source/Alamofire.swift:94:24: '.dynamicType'は廃止されました。代わりに' 'type(of:...) 'を使用してください – doannx

+0

Alamofireバージョン4で試してみると、コンパイルできますが、post()メソッドのurlパラメータはString型ですので、URLConvertibleオブジェクトには適用できません(URLStringConvertibleはAlamofireバージョン4で終了しました)。 – doannx

0

あなたは、コールバックメソッドにブレークポイントを編集することができ

+0

エラー404で失敗したコールバック。 – doannx

関連する問題