私は働いているメディアプレーヤーアプリを持っていて、文字列の形でURLを取得するAlamofireリクエストを送信しています...応答を受け取ったとき、正しく受信しました文字列ですが、それをNSURLに変換しようとすると、何も得られません。Alamofire response.result.valueでNSURLを使用できません!スウィフト、xcode 7.3
要求がある:私のURLStringはStringです
Alamofire.request(.GET, URLString, parameters: ["foo": "bar"])
.validate(statusCode: 200..<300)
.responseString(encoding: NSUTF8StringEncoding) { response in
print("Response: \(response)")
print("Response String: \(response.result.value!)")
self.URLToPlay = response.result.value!
}
、私URLToPlayもStringです。私がNSURLに変換するために使用する コマンドは
let streamingURL = NSURL(string: self.URLToPlay)
である私はURLToPlayに有効なURLに見える文字列を取得、私はブラウザわたしの文字列を受け取っ/ペーストをコピーした場合、実際には、私はメディアを再生することができています...私はそれを使用してNSURLに変換すると、私のアプリケーションがクラッシュする(streamingURLがnilであるため)。
これはリクエストが非同期であることと関係していると思いますが、これをどうやって取得するか考えている人はいますか?
私はあなたの助けに大変感謝します。
編集完了ハンドラを使用する:それはnil
になりますので、これはAsync
プロセスであり、あなたがAlamofire
のURLToPlay
OUTSIDE.GET
機能を使用するに関係なく、それはnil
を返すために起こっている
func connectToServer() {
print("Connecting...")
finishLoad { theUrl in
let urlString = theUrl.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())
let streamingURL = NSURL(string: urlString!)
// do what i need to do
}
isConnectedToServer = true
print("Connected...")
}
func finishLoad(complete: (urlToBePlayed: String) ->()) {
var aVar: String!
Alamofire.request(.GET, URLString, parameters: ["foo": "bar"])
.validate(statusCode: 200..<300)
.responseString(encoding: NSUTF8StringEncoding) { response in
aVar = response.result.value!
complete(urlToBePlayed: aVar)
}
}
に答えるために時間を割いていただきありがとうございます!私は卑劣な疑いを持っていました私は "完了ハンドラ"を使用する必要があった...私はNSNotificationsとオブザーバを使用しなければならないと思っていただけです...しかし、これは良いアイデアのようです...私はしばらくのうちにこれをテストし、あなたに戻ってきます – Agustin
NSURLに文字列を変換しようとした直後にエラーが発生しました... – Agustin
'theUrl in'の後に' print(theUrl) 'と表示されます。何か? – Dershowitz123