gpt4 book ai didi

即使有检查,空值也会出现 Swift 错误访问错误

转载 作者:行者123 更新时间:2023-11-28 09:03:53 24 4
gpt4 key购买 nike

我正在从 Obj-C 过渡到 Swift,我想我对 ? !概念。但是,我在一个为 nil 的字段上遇到了严重的访问崩溃。

我正在使用

var cell :ContactIInfoTableViewCell!

cell = tableView.dequeueReusableCellWithIdentifier("notes", forIndexPath: indexPath) as! ContactIInfoTableViewCell
if let clinic = receivedVisitDetails?.clinicNotes {
cell.textLabel?.text = clinic
}

如果为空则产生错误。我的理解是 IF 语句会阻止这个问题,但事实并非如此。

我在这里做错了什么?

enter image description here

更新

这是核心数据获取的详细 View 。

NSManagedObject 设置为

var receivedVisitDetails: VisitDetails! = nil

上一个 View 中的prepareForSeague

let visits:VisitDetails = fetchedResultsController.objectAtIndexPath(indexPath!) as! VisitDetails
taskController.receivedVisitDetails = visits

只有当 clinicNotes 为空时才会发生崩溃。

最佳答案

经过所有的编辑和评论,问题出在:

@NSManaged var clinicNotes: String

它在您的 Core Data 模型中是可选的,但在您的类中不是。应该改为:

@NSManaged var clinicNotes: String?

这是 similar Imanou 建议的问题 mogenerator ,它可以为您处理。它会自动为每个托管对象生成两个类。人的部分适合编辑(更新模型时不被 mogenerator 触及),机器不适合编辑(每次更新模型时都会重写)。人的部分继承自机器的部分。

每当我使用 Core Data 时,我都会使用它。我也强烈建议这样做。您还可以将它添加到构建阶段,因此,它会在您构建项目时自动更新您的机器类。

关于即使有检查,空值也会出现 Swift 错误访问错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31338550/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com