【发布时间】:2016-01-07 18:46:42
【问题描述】:
我有一个核心数据实体,它有一个属性可以表示不同类型的值(int、double、date、string)。
如果我将所有这些值转换为字符串然后再返回,是否会导致问题(例如精度损失)?
@nsmanaged var storedType : Int
@nsmanaged var storedValue : String
var value: Any? {
{
set {
switch newValue
{
case is Int:
self.storedValue = String(newValue)
self.storedType = 0
...
case is string
self.storedValue = newValue
self.storedType = 5
}
}
get {
switch newValue
{
case is 0:
return Int(self.storedValue)
...
case is 5:
return self.storedValue
}
}
}
}
【问题讨论】:
-
“我有一个核心数据实体,它有一个属性可以表示不同类型的值(int、double、date、string)。”对不起,我是将不得不去一个黑暗的房间里躺一会儿。同时,你为什么要做这样的事情?
-
实体描述了数据文件中的范围。数据文件可以是字符串、日期、整数、浮点数或用户指定的任何自定义格式。所以要么我有一个带有一大堆子实体的抽象实体,要么我将范围值转换为字符串。用户可以在创建实体后更改格式。如果我使用子实体,我必须复制其他字段,删除实体,创建一个新实体,设置所有字段并确保 UI 仍然可以更改两个值:开始和结束。使用关系也需要几个几乎不使用的子实体。