【发布时间】:2017-12-18 16:21:59
【问题描述】:
今天我开始创建简单的 xcdatamodel,其中只有 1 个实体和几个属性。所以当我在 nsmanagedobject 的类定义中创建整数 16 类型的数字属性时,它的类型表示为 NSNumber?
class JournalEntry : NSManagedObject {
@NSManaged var date: Date?
@NSManaged var height: String?
@NSManaged var period: String?
@NSManaged var wind: String?
@NSManaged var location: String?
@NSManaged var rating: NSNumber?
}
为什么不在 int16 中? (我读过 objc 没有 int? 类型) (因为在模型中我允许属性是可选的)所以如果我不给 NSNumber 赋值?属性在运行时如何在 objc 中表示? (它会为零?p.s.我将初始值删除为零,所以没有初始值)
【问题讨论】:
-
Objective-C
int(Cint,因为它们是从 C 导入的)没有nil值,因为它们不是对象。通常使用一个特殊的值来表示int。0在这种情况下是个坏主意。这称为“零为空”反模式。 -
JournalEntry的定义从何而来? Xcode 生成了吗?您是否使用其他工具生成它?你是手写的吗?我试图在 Xcode 10.1 中重现您的问题,但我找不到将属性放入class的方法。我只能让它把属性放在extension中。
标签: objective-c swift core-data nsmanagedobject