我试图从我自己创建的网站上获取信息,我需要读取JSON对象以将其数据导入我的iOS应用程序(用Swift编写)。我只能找到很少的关于如何做的教程,其中大部分都使用SWIFTYJson库(https://github.com/SwiftyJSON/SwiftyJSON)。问题是当我使用库时,实际的库代码本身似乎有一些错误,可能是由于Xcode最近的更新。即使是教程中的例子也不起作用。
有没有不同的apporaches在不使用SwiftyJson的情况下解决这个问题?
由于
这是我下载的实际SwiftyJson文件。现在这是他自己的例子,代码似乎有一些错误。
答案 0 :(得分:0)
正如您在评论中所述,您使用Xcode 6.3,这是SwiftyJSON无法正常工作的原因。您已经下载了最新版本的库,它与Swift 2.1兼容,如果我没记错的话,Xcode 6.3与Swift 1.2捆绑在一起。您应该始终使用最新版本的Xcode(不包括beta版本)。 Xcode的版本也会影响你拥有的Swift版本。由于Swift是一种年轻的语言,它在版本之间面临着许多变化,这些变化触发了用Swift编写的框架的变化。
答案 1 :(得分:0)
我能看到的第一个错误"没有名为Indexable的类型......"似乎是reported in the SwiftyJSON project few months ago,它的解决方案是使用Xcode 7进行构建。
我还可以看到你使用iOS SDK 8.3,它可能会更新到9.2并解决问题。如果您使用Xcode 6,请尝试更新到Xcode 7,错误可能会被修复。如果新的SDK版本可用,我也没有理由使用旧的SDK版本。
答案 2 :(得分:0)
如果你想像你的版本一样使用:
尝试创建新的swift
文件并手动导入此swiftyJSON version
。 (不是最新的)这适用于xcode 7.2
和Swift 2
以及deployment target 8.0.
https://gist.github.com/fatihyildizhan/450822246e8deb14099c
要求 iOS 7.0+ / Mac OS X 10.9+, Xcode 7
答案 3 :(得分:-3)
请勿忘记导入Alamofire
和SwiftyJSON
。
// This is Alamofire Request
func LoginWithAPI(completion : (String) -> ()) {
Alamofire.request(.POST, "your_api_url", parameters: ["username":"bodrum", "password":"yalikavak"], encoding: ParameterEncoding.JSON)
.validate()
.responseJSON { response in
switch response.result {
case .Success:
// Parse your result to JSON object first.
// JSON is SwiftyJSON object.
let jsonResponse = JSON(data: response.data!)
let result = jsonResponse["result"].stringValue
completion(result)
case .Failure(let error):
completion(error.description)
}
}
}
如果您想添加任何header
,请使用以下行:
Alamofire.request(.POST, "your_api_url", parameters: ["username":"bodrum", "password":"yalikavak"], encoding: ParameterEncoding.JSON,
headers: ["header_key": "header_value"])