我想首先说我是一个快捷(以及一般编码)的完全新手。我想从URL(即:体育赛事列表)中提取一些信息到我的应用中的某个视图控制器视图中。我查阅了各种线程,其中引用了kanna和JSON,但正如我所提到的那样,我对这个新手很感兴趣,所以这有点超出我的理解。如何将URL中的信息拖入我的swift应用程序
任何人都可以提供一些简单的步骤或知道一些视频/文件,我可以读到这一点来实现这一点?
谢谢
我想首先说我是一个快捷(以及一般编码)的完全新手。我想从URL(即:体育赛事列表)中提取一些信息到我的应用中的某个视图控制器视图中。我查阅了各种线程,其中引用了kanna和JSON,但正如我所提到的那样,我对这个新手很感兴趣,所以这有点超出我的理解。如何将URL中的信息拖入我的swift应用程序
任何人都可以提供一些简单的步骤或知道一些视频/文件,我可以读到这一点来实现这一点?
谢谢
有多个部分你的问题。
您需要从远程服务器获取数据,然后您需要解析它。在第一部分,下载,你可以使用NSURLSession
(改名URLSession
斯威夫特3.
我在Github上称为Async_demo一个示例项目,演示如何使用URLSession
下载数据。
为了解析您可以使用JSON JSONSerialization
,这使得它非常简单的JSON数据转换为雨燕的对象,你应该能够搜索的斯威夫特JSONSerialization
在这里找到SO或其他地方的例子。
您也可以使用第三方库像SwiftyJSON
或AlamoFire
到做JSON解析(和)
使用URLSession
和JSONSerialization并不难,但是,这是学习如何在Xcode中使用Apple优秀的API文档并学习应用程序框架的良好练习。
我将使用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
}
不要在Swift中使用NSDictionary。坚持使用Swift词典。 – ebby94
是的,我的坏。我更新了我的答案 –
我使用这个免费的视频课程来学习iOS网络,它应该显示你需要知道的一切开始.. https://www.udacity.com/course/ios-networking-with-swift-ud42 。或者另一个选择是学会使用[alamofire](https://github.com/Alamofire/Alamofire) – Scriptable