2017-04-15 33 views
-3

我想首先说我是一个快捷(以及一般编码)的完全新手。我想从URL(即:体育赛事列表)中提取一些信息到我的应用中的某个视图控制器视图中。我查阅了各种线程,其中引用了kanna和JSON,但正如我所提到的那样,我对这个新手很感兴趣,所以这有点超出我的理解。如何将URL中的信息拖入我的swift应用程序

任何人都可以提供一些简单的步骤或知道一些视频/文件,我可以读到这一点来实现这一点?

谢谢

+0

我使用这个免费的视频课程来学习iOS网络,它应该显示你需要知道的一切开始.. https://www.udacity.com/course/ios-networking-with-swift-ud42 。或者另一个选择是学会使用[alamofire](https://github.com/Alamofire/Alamofire) – Scriptable

回答

1

有多个部分你的问题。

您需要从远程服务器获取数据,然后您需要解析它。在第一部分,下载,你可以使用NSURLSession(改名URLSession斯威夫特3.

我在Github上称为Async_demo一个示例项目,演示如何使用URLSession下载数据。

为了解析您可以使用JSON JSONSerialization,这使得它非常简单的JSON数据转换为雨燕的对象,你应该能够搜索的斯威夫特JSONSerialization在这里找到SO或其他地方的例子。

您也可以使用第三方库像SwiftyJSONAlamoFire到做JSON解析(和)

使用URLSession和JSONSerialization并不难,但是,这是学习如何在Xcode中使用Apple优秀的API文档并学习应用程序框架的良好练习。

1

我将使用Alamofire这个回答一个非常好的框架,以检查每当你使用Web API的斯威夫特

交互我

你想开始创建一个自定义模型,您可以使用它将您的JSON数据映射到您收到它的时间,我将其称为Fixture。我不知道你使用的API或模型需要包含什么,所以我就做一些事情

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

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

然后,你需要使用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。坚持使用Swift词典。 – ebby94

+0

是的,我的坏。我更新了我的答案 –

相关问题