我正在使用 Alamofire 从服务器 (http://midlandgates.co.uk/JSON/reliveCacheData.json) 中提取一个 JSON 文件。为此,我有一个 Alamofire Request 函数,它应该拉取数据并将其写入一个名为 JSONDataClass
的类。
Alamofire 请求
Alamofire.request(.GET, "http://midlandgates.co.uk/JSON/reliveCacheData.json")
.response { request, response, data, error in
if let data = data {
let json = JSON(data:data)
for locationData in json {
let locationDataJSON = JSONDataClass(json: locationData.1)
self.cacheData.append(locationDataJSON)
}
for title in self.cacheData {
print(title.memoryTitle)
}
}
}
但是我的 printLn 没有打印来自 JSON 文件的数据,这表明请求或类存在问题。但是我是 swift 的新手,似乎无法解决问题,感谢所有帮助!
类
import Foundation
import CoreLocation
import SwiftyJSON
class JSONDataClass {
//Location MetaData
var postUser: String!
var memoryTitle: String!
var memoryDescription: String!
var memoryType: String!
var memoryEmotion: String!
var taggedFriends: String!
//Location LocationalData
var memoryLocation: CLLocationCoordinate2D
//MultiMedia AddressData
var media1: String!
var media2: String!
var media3: String!
var media4: String!
var media5: String!
//Writing to varibles
init(json: JSON) {
postUser = json["user"].stringValue
memoryTitle = json["title"].stringValue
memoryDescription = json["description"].stringValue
memoryType = json["type"].stringValue
memoryEmotion = json["emotion"].stringValue
taggedFriends = json["friends"].stringValue
memoryLocation = CLLocationCoordinate2D(latitude: json["latitude"].doubleValue, longitude: json["longitude"].doubleValue)
media1 = json["media1"].stringValue
media2 = json["media2"].stringValue
media3 = json["media3"].stringValue
media4 = json["media4"].stringValue
media5 = json["media5"].stringValue
}
}
最佳答案
(注意:JSON 内容的作者已根据我的回答修复了他的 JSON - 在发表这篇文章时我的回答是正确的)。
问题是您从服务器返回了无效的 JSON。
我将您的 SwiftyJSON 代码切换出来并将其包装在一个 try-catch 中,这说明了问题:
Alamofire.request(.GET, "http://midlandgates.co.uk/JSON/reliveCacheData.json")
.response { request, response, data, error in
//print("status \(response)")
do {
let myData = try NSJSONSerialization.JSONObjectWithData(data!,
options: .MutableLeaves)
print(myData)
} catch let error {
print(error)
}
}
我收到以下错误:
2015-12-30 13:47:06.129 {{ignore}}[10185:2174510] Unknown class log in Interface Builder file. Error Domain=NSCocoaErrorDomain Code=3840 "Unescaped control character around character 961." UserInfo={NSDebugDescription=Unescaped control character around character 961.}
此错误基本上意味着您从服务器返回了无效的 JSON。
通过 JSONLint 运行它以确保您的 json 有效:
http://jsonlint.com
关于ios - Alamofire JSON 请求不从服务器中提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34535380/