我有一个核心数据模型,其中包含名为location
的Transformable属性。但是,当我使用initWithEntity:insertIntoManagedObjectContext:
创建新实体时,location
为nil
。
这是预期的行为吗?我期待预先为实体中的一个字段分配所有内存。如果这是预期的行为,建议的解决方法是什么?在location
中为awakeFromInsert
分配内存是个好主意吗?
答案 0 :(得分:0)
是的,这是预期的。如果您没有向实体提供任何数据,它将如何知道要分配的大小。即便如此,它会如何处理这种分配,因为它不是一个真正的对象,你无法真正将其转换为一个。如果没有任何内容,您应该期望该属性保留nil
。你不需要也不应该用一些默认的空分配填充它。
如果您要设置默认对象,那么这是另一回事。那么awakeFromInsert
可能是一个不错的选择。问题是是否应将默认对象保存到商店中(因此可以搜索)。如果不是,您可能希望实现自定义访问器方法,以便在存储值为nil
时返回默认对象。