在我的核心数据模型中,我有一个实体,其属性是一个结构。这是结构
struct Range: NSCoding {
let minValue: Int
let maxValue: Int
/* implementations of
required init?(coder: NSCoder)
and
func encode(with aCoder: NSCoder)
*/
}
为了简洁起见,让我们想象一个像这样的实体:
Question
-title: String
-range: Range
我知道range属性需要是数据模型中的Transformable。
当尝试将Range指定为可转换的类时,我得到Property cannot be marked @NSManaged because its type cannot be represented in Objective-C
错误
正确的设置是什么?
更具体地说,Xcode编辑器中以下属性的正确值是什么?
谢谢!
答案 0 :(得分:1)
我会将 select a1, a2,
unnest(array[a3,a4,a5,a6,a7])
from X
和minValue
保存为实体中的maxValue
Int32
如果结构使用简单版本(因为@NSManaged var minValue: Int32
@NSManaged var maxValue: Int32
无论如何都不支持结构)
NSCoding
和struct Range {
let min: Int
let max: Int
}
(sub)类中的计算属性,用于将两个属性映射到NSManagedObject
对象
Range
或忘记结构并使用真实的var range : Range {
get { return Range(min: Int(minValue), max: Int(maxValue)) }
set {
minValue = Int32(newValue.min)
maxValue = Int32(newValue.max)
}
}
Range
考虑var range : Range<Int> {
get { return Range<Int>(uncheckedBounds: (Int(minValue), Int(maxValue))) }
set {
minValue = Int32(newValue.lowerBound)
maxValue = Int32(newValue.upperBound)
}
}
使用半开放式:Range<T>
包含0..<3
,0
和1
修改强>
如果范围应该是可选的,那么如果2
&gt;您可以识别有效范围。例如maxValue
minValue