Существует метод, используемый для заполнения базы данных области действия из JSON:Сегментация Ошибка при чтении JSON парсер для NSArray в быстрой
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