Базовые данные, преуменьшение любого EXC_BAD_ACCESS (код = 1, адрес = 0x0) - PullRequest
0 голосов
/ 04 декабря 2018

Я сохраняю некоторые данные, которые я получаю от 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, но когда я проверяю переменную, она не равна нулю:

enter image description here

...