【发布时间】:2015-03-22 12:49:21
【问题描述】:
我正在尝试将 JSON 格式的数据从我的服务器加载到 IOS 应用程序中。
这是我的 JSON:
[
{
"BankName": "bank1",
"CurrencyName": "cur1",
"SellRate": "0.65",
"BuyRate": "0.55",
"OfficialRate": "0.6"
},
{
"BankName": "bank1",
"CurrencyName": "cur2",
"SellRate": "1.65",
"BuyRate": "1.55",
"OfficialRate": "1.6"
}
]
我的项目中有2个文件:
1:
import Foundation
class Shot {
var bankName: String!
var currencyName: String!
var sellRate: String!
var buyRate: String!
var offRate: String!
init (data: NSDictionary) {
self.bankName = getStringFromJSON(data, key:"BankName")
self.currencyName = getStringFromJSON(data, key:"CurrencyName")
self.sellRate = getStringFromJSON(data, key:"SellRate")
self.buyRate = getStringFromJSON(data, key:"BuyRate")
self.offRate = getStringFromJSON(data, key: "OfficialRate")
}
func getStringFromJSON(data: NSDictionary, key: String) -> String {
if let info = data[key] as? String{
return info
}
return ""
}
}
2:
import Foundation
class JsonTest {
func loadJson(completion: ((AnyObject) -> Void)!) {
var urlString = "http://a.com/g.php"
let session = NSURLSession.sharedSession()
let sourceUrl = NSURL(string: urlString)
var task = session.dataTaskWithURL(sourceUrl!){
(data, response, error) -> Void in
if error != nil {
println(error.localizedDescription)
} else {
var error: NSError?
var jsonData = NSJSONSerialization.JSONObjectWithData(data, options: .MutableContainers, error: &error) as NSArray
var shots = [Shot]()
println(jsonData)
for shot in jsonData{
let shot = Shot(data: shot as NSDictionary)
shots.append(shot)
}
println(shots) //[jsontest.Shot, jsontest.Shot]
}
}
task.resume()
}
}
我正在尝试在我的应用启动时自动填充数组。为此,我在 mainViewController 类中有一个代码。
override func viewDidLoad() {
super.viewDidLoad()
let api = JsonTest()
api.loadJson(nil)
}
当我尝试在第二个文件中打印镜头变量时,会出现问题。
当我期待字典数组时,它返回[jsontest.Shot, jsontest.Shot]。
println(jsonData) 工作正常并显示来自 URL 的 JSON 数据。
谁能告诉我程序有什么问题?
【问题讨论】:
-
似乎有两个问题:1)您尝试使用
println进行调试而不是设置断点并检查您的对象值,以及2)您尚未创建description或debugDescription属性为您的对象,所以您的对象上的println只是使用一些默认实现。
标签: arrays json swift dictionary nsurlconnection