我需要将 a 的内容临时存储NSManagedObject
到字典中。因为核心数据有自己的内存管理程序,我不想保留任何指向NSManagedObject
's 字段的强指针,此时只有值是感兴趣的(值在视图控制器之间传递,MOC 不同)。我也不能创建弱指针,因为我想控制内存回收何时完成。
我尝试了几件事,都失败了或不符合目的。
重复
[[myNSMO alloc] initWithEntity:[NSEntityDescription entityForName:entity inManagedObjectContext:myNSMO.managedObjectContext] insertIntoManagedObjectContext:nil];
它正在工作,但不适合我的应用程序设计(无需详细说明)NSDictionary
从 中生成 aNSManagedObject
,使用[myNSMO dictionaryWithValuesForKeys:<#(NSArray *)#>]
。这不好,因为它返回一个包含 NSManagedObject 字段地址的字典。使用copyWithZone创建一个
NSDictionary
填充每个键值,像这样[myDictionary setObject:[myNSMO.field copyWithZone:nil] forKey:@"Key"];
也不起作用,我仍然得到字段地址......手动输入每个字段,
[myDictionary setObject:[NSString stringWithFormat:@"%@",myNSMO.field ] forKey:@"Key"];
这次很好,我确实获得了新的内存分配。但是手动编写代码非常耗时......
有人找到聪明的方法来做到这一点的机会吗?选项 1) 不起作用的原因是因为我将字典用作队列。我首先存储对象的副本,然后在需要时弹出条目。然后将该特定字典条目的副本返回到询问方法。问题是我无法创建NSManagedObject
使用创建的副本[[...] insertIntoManagedObjectContext:nil];
有什么解决办法吗?