致命错误意外nil核心数据

时间:2017-02-16 11:52:51

标签: ios iphone swift uitableview core-data

当我尝试读取字符串并写入单元格时,从核心数据我得到以下错误

  

"致命错误:在打开Optional时意外发现nil   值"

保存

func getContext() -> NSManagedObjectContext {
    let appDelegate = UIApplication.shared.delegate as? AppDelegate
    return (appDelegate?.persistentContainer.viewContext)!
}

func save(value:String, forKey:String) {
    let context = getContext()
    let entity = NSEntityDescription.entity(forEntityName: "Ostatnie", in: context)

    let adj = NSManagedObject(entity: entity!, insertInto: context)
    add.setValue(value, forKey: forKey)

    do {
        try context.save()
        print("save - \(value)")
    } catch {
        print("err zapisu \(error)")
    }
}

保存

save(value: annotation.title!, forKey: "nazwa")

获取值(具有全局var nameTab:[String] = [])

func get(value:String ) -> String {
    var value2 = value
    let request: NSFetchRequest<Ostatnie> = Ostatnie.fetchRequest()

    do {
        let result = try getContext().fetch(request)

        for liczby in result {
            print(liczby.value(forKey: "nazwa") ?? String.self)
            value2 = liczby.value(forKey: "nazwa") as! String
            nazwaTab.append(wartosc2)
            print(nameTab)

            print(nameTab)
        }

    } catch {
        print(error)
    }
    return value2
}

和tableView

 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return nazwaTab.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! cellTableViewCell

    cell.nazwaLabel.text = nameTab[indexPath.row]

    return cell
}

1 个答案:

答案 0 :(得分:0)

使用以下代码。你的代码崩溃是因为它从liczby [&#34; nazwa&#34;]获得nil值或者是其他类型的值而不是String。

if let str = liczby["nazwa"] as? String {
   value2 = str
}