gpt4 book ai didi

swift - Core Data 中的可选 Int32 值需要在代码中解包可选的 Int32 值

转载 作者:行者123 更新时间:2023-11-30 10:43:17 25 4
gpt4 key购买 nike

在Core Data中,String和Int32类型的属性是“可选的”(在属性中勾选)。

enter image description here

代码中这些值对应的,都是与可选类型相同的类型。

        var color1: String?
var color2: String?
var color3: String?
var colorRangeLoc1: Int32?
var colorRangeLoc2: Int32?
var colorRangeLoc3: Int32?

在某些情况下会设置值,并将其作为可选值传递给函数,以便传输到核心数据。

func loadCellData(text: String, sortOrder: Int32, portion: Float, color1: String?, color2: String?, color3: String?, colorRangeLoc1: Int32?, colorRangeLoc2: Int32?, colorRangeLoc3: Int32?, colorRangeLen1: Int32?, colorRangeLen2: Int32?, colorRangeLen3: Int32?, underlineRangeLoc1: Int32?, underlineRangeLoc2: Int32?, underlineRangeLoc3: Int32?, underlineRangeLen1: Int32?, underlineRangeLen2: Int32?, underlineRangeLen3: Int32?)
{
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context = appDelegate.persistentContainer.viewContext

let entry: CellData = NSEntityDescription.insertNewObject(forEntityName: "CellData", into: context) as! CellData

entry.text = text
entry.sortOrder = sortOrder
entry.portion = portion
entry.color1 = color1
entry.color2 = color2
entry.color3 = color3
entry.colorRange1Loc = colorRangeLoc1
entry.colorRange2Loc = colorRangeLoc2
entry.colorRange3Loc = colorRangeLoc3
...

Xcode 编译字符串时没有错误?值、颜色1、颜色2 和颜色3,但对于Int32 显示以下错误?值:

Value of optional type 'Int32?' must be unwrapped to a value of type 'Int32'

这表明 CoreData 中的可选 Int32 需要未包装的可选值(而可选的 String 就可以)?是否有区别(这将帮助我理解原因),如果有,如何最好地管理?

指定“nil”作为起始值不起作用。如果为零(当然),强制展开会导致崩溃。是否有必要检查所有 Int32 类型的值?

if colorRangeLoc1 != nil { entry.colorRangeLoc1 = colorRangeLoc1 }

或者应该是“守卫”还是“如果让”?

最佳答案

CoreData 中的可选值与 Swift 中的不同。根据评论,至少对于数字,设置一个强制性的 - 不可能的值 - 而不是 nil,并在使用该值时检查这一点。

关于swift - Core Data 中的可选 Int32 值需要在代码中解包可选的 Int32 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56338479/

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