В Базовых данных атрибуты типа String и Int32 имеют значение «Необязательно» (отмечены в свойствах).
Соответствуют этим значениям в коде, являются теми же типами, что и необязательные.
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 компилируетсябез ошибок для строки?значения, color1, color2 и color3, но показывает следующую ошибку для Int32?значения:
Это говорит о том, что необязательный Int32 в CoreData требует развернутого необязательного значения (в то время как необязательные строки в порядке)?Есть ли разница (это помогло бы мне понять, почему), и если да, то как с этим лучше всего справиться?
Назначение nil в качестве начального значения не работает.Принудительное развертывание вызывает сбой, если ноль (конечно).Нужно ли проверять все значения типа Int32?
if colorRangeLoc1 != nil { entry.colorRangeLoc1 = colorRangeLoc1 }
Или это должно быть 'guard' или 'if let'?