2017-04-15 1 views
-3

私は最初に、私は素早く(そして一般的なコーディングに)完全な初心者だと言いたいと思います。私はURLからいくつかの情報を取得したい(つまり、スポーツ用具のリスト)私のアプリのviewcontrollerビューの1つにしたい。私はkannaとJSONを参照するさまざまなスレッドを見てきましたが、私が言及したように、私はこれを初めて使っていますので、ちょっと理解していません。URLからの情報を迅速なアプリケーションにプッシュする方法

誰でも簡単な手順を説明したり、これを実現するために私がこれを読むことができるビデオ/ドキュメントを知っている人はいますか?

は、私はあなたがスウィフト

でWeb APIと対話している時はいつでも私がチェックアウトする本当にすてきな枠組みあなたがすることによって開始することをお勧めします。この回答にAlamofireを使用するつもりだ、

+0

私はこの無料ビデオコースを使ってiOSネットワークを学びました。開始するには知っておくべきことがすべてわかります。https://www.udacity.com/course/ios-networking-with-swift--ud42 。または別のオプションは[alamofire](https://github.com/Alamofire/Alamofire)を使用することを学ぶことです – Scriptable

答えて

1

あなたの質問への複数の部分があります。

リモートサーバーからデータを取得し、次に解析する必要があります。最初の部分については、ダウンロードし、あなたは私がデータをダウンロードするURLSessionを使用して実証GitHubの上Async_demoと呼ばれるサンプルプロジェクトを持っている

スウィフト3にNSURLSession(名前を変更URLSessionを使用することができます。

を使用することができますJSONを解析するためのスウィフトオブジェクトにJSONデータを変換することが非常に簡単になりJSONSerialization、。あなたがSOまたは他の場所で、ここで例を見つけるためにスウィフトJSONSerializationを検索することができるはずです。

またSwiftyJSONまたはAlamoFireのようなサードパーティのライブラリを使用することができますJSON構文解析を行います

URLSessionとJSONSerializationを使用することはそれほど難しいことではありません.Appleの優れたAPIドキュメントをXcodeでどのように使用してアプリケーションフレームワークを学ぶのがよいでしょうか。

1

をありがとうJSONデータを受け取ったときにそれをマップするために使用できるカスタムモデルを作成して、私はFixtureと呼ぶつもりです。私はあなたが使用しているか、あなたのモデルが含まれている必要がありますどのようなので、私はちょうど

struct Fixture { 
    var id: Int? 
    var name: String? 

    init(from dict: Dictionary<String, AnyObject>) { 
     // We'll this out later 
    } 
} 

は、その後、あなたはAPIを呼び出して取得するAlamofireを使用して関数を作成する必要があるいくつかの物事を作ってあげるどのAPIを知りません応答。これは、パラメータやヘッダーのない、本当にシンプルな関数です。

Alamofire.request(/*endpoint url*/, method: .get, parameters: nil, encoding: JSONEncoding.prettyPrinted, headers: nil).responseJSON { response in 
    if response.response?.statusCode == 200 { 
     if let JSON = response.result.value { 
      if let response = JSON as? Dictionary<String, AnyObject> { 
       // This is where to take the values out of the JSON and cast them as Swift types. 
       //For this example I will imagine that one fixture is returned in a dictionary called "fixture" 
       if let dict = response["fixture"] as? Dictionary<String, AnyObject> { 
        let fixture = Fixture(from: dict) 
       } 
      } 
     } 
    } 
    } 

これは本当に簡単な例です。 APIレスポンスの正確な構造によって異なるように見えます。あなたがあなたの質問をエンドポイントで更新した場合、私はこの回答を更なるヘルプで更新することができます。

我々は今、このように見えるためにそれを更新することができ、あなたのFixtureモデルでinit方法としては:

init(from dict: Dictionary<String, AnyObject>) { 
    id = dict["id"] as? Int 
    name = dict["name"] as? String 
    // Again these will need to be changed to accomodate the exact response 
} 
+0

SwiftでNSDictionaryを使用しないでください。スウィフト辞書付き。 – ebby94

+0

はい、私の悪いです。私は自分の答えを更新した –

関連する問題