【问题标题】:How to add an object to a NSMutableArray that is stored in a CoreData iOS database?如何将对象添加到存储在 CoreData iOS 数据库中的 NSMutableArray?
【发布时间】:2013-01-31 01:15:17
【问题描述】:

我有一个NSManagedObject 子类,其中absencesNSMutableArray

@interface Record : NSManagedObject
@property (nonatomic, retain) id absences;
@end

我希望能够将项目添加到缺勤数组;但是,如果我执行[myRecord.absences addObject:SomeObj,则记录无法正确保存。看起来NSManagedObject 几乎不知道我更新了absences 数组。

尽管如此,如果我将SomeObj 添加到一些localAray,然后设置myRecord.absences = localArrayNSManagedObject 将正确保存。

谁能解释一下这种行为以及如何避免它...谢谢

【问题讨论】:

  • 重复?可能的解决方案? stackoverflow.com/questions/1104075/…
  • Core Data 和 SQLite 之间存在很大差异(功能方面)。你用的是哪一个?
  • 我正在使用 Core Data...但这不是在下面使用 SQLite 吗?很抱歉造成混乱

标签: iphone ios objective-c core-data


【解决方案1】:

你说得对,在第一种情况下,你正在更改 NSManagedObject 视野之外的对象。为了解决这个问题,Apple doc says 如下

对于可变值,您应该将值的所有权转移给 Core Data,或者实现自定义访问器方法以始终执行复制。

所以用(copy) 声明你的财产就足够了。

【讨论】:

  • 所以在Record 我会这样做:@property (nonatomic, retain, copy) id absences;?我是否正确理解添加单词copy 意味着每当您尝试设置此属性时,它都会复制该值而不是直接设置它?
  • 您将retain 替换为copy,是的,您的值将始终被复制。
猜你喜欢
  • 2015-08-29
  • 1970-01-01
  • 1970-01-01
  • 2012-04-25
  • 1970-01-01
  • 2021-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多