После преобразования нашей кодовой базы в Swift 4.2 мы получали сбой при установке значения для атрибутов типа «двоичные данные».Я обновил атрибуты до «Преобразуемый тип», но он не вставляет данные в БД.
Ошибка, когда тип данных был двоичные данные : «требуемый тип NSData заданного типа __NSDictionary error»
{
var modelValue: (value: Any?, defaultValue: Any?)
if value is Array<Any>,
let tempValue = value as? [String] {
modelValue = (tempValue.joined(separator:","),
DBManagedObject.DefaultValues.defaultDateValue as AnyObject?)
} else {
switch attribute.attributeType {
case .integer16AttributeType,
.integer32AttributeType,
.integer64AttributeType,
.decimalAttributeType,
.doubleAttributeType,
.floatAttributeType:
fallthrough
case .booleanAttributeType:
modelValue = numberValueForAttribute(value: value)
case .stringAttributeType:
modelValue = stringValueForAttribute(value: value)
case .dateAttributeType:
let defaultDateFormat = TBManagedObject.DefaultValues.defaultDateFormatString
let dateFormat = (model as? ParserDateDelegate)?.dateFormatString ?? defaultDateFormat
modelValue = dateValueForAttribute(value: value, dateFormat: dateFormat)
default:
modelValue = (value, nil)
}
}
if modelValue.value != nil {
model.setValue(modelValue.value, forKey: attribute.name)
} else {
if model.value(forKey: attribute.name) == nil {
model.setValue(modelValue.defaultValue, forKey: attribute.name)
}
}
}