gpt4 book ai didi

core-data - 核心数据 : save different types as the same attribute

转载 作者:行者123 更新时间:2023-12-03 08:03:34 24 4
gpt4 key购买 nike

我有一个核心数据实体,它有一个属性可以表示不同类型的值(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
}
}
}
}

最佳答案

虽然我会首先认真考虑架构,但我同意这个功能可能有一个案例,除了 SO 之外,还有什么地方应该问这个问题*。

一种选择是使用可转换的属性类型。这种类型允许 coreData 存储任何符合 NSCoding 的对象(NSArray、NSDictionary 等)以及我相信的 NSString 和 NSNumber。

因此您可以检索该对象作为通用类型(Objective-C 中的 id,不知道 swift 中的等价物),然后查询它的类型并将其转换为您需要的任何类型。

这种方法的缺点当然是您在查询存储时失去了很多 coreData 功能,因为您存储为可转换属性的值或多或少对谓词等不透明。然而,它适用于使用关键路径遍历核心数据结构。

*) 我相信我读过 VB 中等效的变体数据类型是 Joel Spolsky 对该语言的贡献之一......

关于core-data - 核心数据 : save different types as the same attribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34662837/

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