Я сохраняю некоторые данные, которые я получаю от API с Core Data.Иногда, когда я хочу сохранить данные, возникает ошибка:
Поток 4: EXC_BAD_ACCESS (код = 1, адрес = 0x0)
в этой строке:
coin.name = ticker.value as? String
Это моя полная функция:
private func saveDictionary(version: ApiParameter, _ data: [String:Any?]?, _ fetchRequest: NSFetchRequest<Coin>) throws {
if checkVersion(version: version.versionKey()) {
if data != nil {
for ticker in data! {
if ticker.value != nil {
fetchRequest.predicate = NSPredicate.init(format: "ticker = %@", "\(ticker.key)")
do {
let coins = try managedContext.fetch(fetchRequest)
for coin in coins {
// print("ticker:",coin.ticker)
if ticker.key == coin.ticker {
switch version {
case .linksWebsites:
coin.website = ticker.value as? String
case .fdefSymbolsTallCc:
coin.ccsymbol = ticker.value as? String
case .icons32Exall:
coin.icon = ticker.value as? NSData
case .fdefCoinsTarrExall:
coin.group = ticker.value as? [String]
case .coinNamesExall:
coin.name = ticker.value as? String
default: break
}
}
}
}
}
}
}
}
do {
try managedContext.save()
} catch let error {
print(error.localizedDescription)
throw error
}
}
После некоторых исследований я обнаружил, что ошибка указывает на наличие указателя NULL, но когда я проверяю переменную, она не равна нулю: