Я пытаюсь загрузить данные в формате JSON с моего сервера в приложение IOS.борется с разбором JSON в swift
Вот мой 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()
}
}
Я пытаюсь автоматически заполнять массив, когда мой pp начинается. Для этого у меня есть код в моем классе mainViewController.
override func viewDidLoad() {
super.viewDidLoad()
let api = JsonTest()
api.loadJson(nil)
}
Проблема возникает, когда я пытаюсь напечатать переменную кадров во втором файле. возвращает [jsontest.Shot, jsontest.Shot]
, когда ожидал массив словарей.
println(jsonData)
отлично работает и показывает данные JSON по URL.
Может кто-нибудь сообщить, что не так в моей программе?
Кажется, что есть две проблемы: 1) вы пытаетесь использовать 'println' для отладки вместо установки точки останова и проверки значений ваших объектов, а 2) вы не создали описание' '' '' '' '' '' debugDescription 'для вашего объекта, поэтому' println' на вашем объекте просто использует некоторую реализацию по умолчанию. – nhgrif