我有一个名为Activity
(一个)和Game
(很多)的实体。我将删除规则设置为Cascade for" game" &{34;活动" Activity
实体和Nullify之间的关系(后面会详见***)游戏实体的关系。
如果删除Activity
对象,则还会从核心数据中删除所有Game
个对象。因此,这种关系的级联规则似乎运作正常。
现在,如果我删除了许多对象中的一个或全部" Game"使用提供的方法:removeGameObject
:和removeGame
:,Activity
对象将不再链接到任何Game
个对象。所以这似乎有效。但在做一个独立的查询时,游戏"实体,那些应该被删除的游戏对象仍然在Core Data中。它们不仅仅与任何Activity
对象相关联。
***我也尝试过No Action,Cascade删除规则。
我可以手动删除Game对象。但必须有正确的方法来做到这一点。
任何指针?
@class Game;
@interface Activity : NSManagedObject
@property (nonatomic, retain) NSNumber * activityID;
@property (nonatomic, retain) NSString * activityType;
@property (nonatomic, retain) NSSet *game;
@end
@interface Activity (CoreDataGeneratedAccessors)
- (void)addGameObject:(Game *)value;
- (void)removeGameObject:(Game *)value;
- (void)addGame:(NSSet *)values;
- (void)removeGame:(NSSet *)values;
@end
@class Activity;
@interface Game : NSManagedObject
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) Activity *activity;
@end
答案 0 :(得分:3)
removeGame
和removeGameObject
是Activity
实体上的方法,那么为什么您认为它们会删除Game
个对象?他们完全按照他们的说法执行操作,从Game
删除Activity
- 删除引用,但实际上并不删除Game
对象。这些方法在您拥有多对多关系而非一对一关系时更有用,因为它们允许您轻松地从关系中删除特定对象。
如果要删除Game
实体,则需要在deleteObject:
实例上调用NSManagedObjectContext
方法,指定要删除的Game
。如果您执行此操作并且已将删除规则设置为从Nullify
到Game
的反向关系Activity
,则Game
的引用将从{{Activity
中移除1}}。