閱讀JSON解析到NSArray中有用於從JSON填補領域數據庫的方法:段錯誤而迅速
func parseJSON(data: NSData) -> NSArray? {
do {
let array: NSArray = try NSJSONSerialization.JSONObjectWithData(data, options: .MutableContainers) as! NSArray
return array
} catch _ {
return nil
}
}
//parameter came from previous method
func updateDatabaseFromParsedJson(parsedJson: NSArray) {
let realm = try! Realm()
try! realm.write {
realm.deleteAll()
}
for i in 0..<parsedJson.count {
let deviceObject = parsedJson[i]
let name = deviceObject["name"] as! String
let id = deviceObject["id"] as! Int
var device = Device()
device.name = name
device.id = id
try! realm.write {
realm.add(device)
}
var deviceMeasuresArray = deviceObject["measures"] as! NSArray
for i in 0..<deviceMeasuresArray.count {
var measureObject = deviceMeasuresArray[i]
var measure = Measure()
measure.slug = measureObject["name"]
measure.device = device
measure.localize()
try! realm.write {
realm.add(measure)
}
var measureEntriesArray = measureObject["averages"] as! NSArray
for i in 0..<measureEntriesArray.count {
var entryObject = measureEntriesArray[i]
var entry = PeriodAverage()
entry.measure = measure
entry.value = entryObject["value"]
entry.start = NSDate.parse(entryObject["start"])
entry.end = NSDate.parse(entryObject["end"])
entry.length = entryObject["length"]
try! realm.write {
realm.add(entry)
}
}
}
}
}
extension NSDate {
class func parse(dateString: String) -> NSDate {
let format = "yyyy-MM-dd'T'HH:mm:ss'Z'"
let formatter = NSDateFormatter()
formatter.dateFormat = format
return formatter.dateFromString(dateString)!
}
}
JSON本身http://188.166.51.200/api/v1/actual_data/
在編譯時,我得到錯誤Error:unable to execute command: Segmentation fault: 11
在哪裏我錯了,如何正確解析我的JSON?我認爲問題出現在json字段被強制解析爲對象的行中,但我是swift中的新成員,並且不能準確地確定錯誤。
編譯時或應用程序運行時?你需要精確地確定你的問題在哪裏。您可以使用它的斷點,或添加日誌來知道在哪裏。 – Larme