MagicalRecord更新实体的关系对象不起作用

时间:2014-05-22 17:03:29

标签: ios core-data magicalrecord

我将一个对象传递给另一个视图控制器,我正在尝试更新该实体的关系对象。如下所示,“self.stock”是传递给此视图控制器的实体。首先,我删除它的所有关系对象,然后向它添加新的关系对象。

Stock.h

@class Photo, StockCategory, StockOption;

@interface Stock : NSManagedObject

@property (nonatomic, retain) NSString * name;

@end

@interface Stock (CoreDataGeneratedAccessors)

- (void)addCategoriesObject:(StockCategory *)value;
- (void)removeCategoriesObject:(StockCategory *)value;
- (void)addCategories:(NSSet *)values;
- (void)removeCategories:(NSSet *)values;

- (void)addOptionsObject:(StockOption *)value;
- (void)removeOptionsObject:(StockOption *)value;
- (void)addOptions:(NSSet *)values;
- (void)removeOptions:(NSSet *)values;

@end

更新按钮操作

- (void)submit
{
    self.stock.name = name;

    for (StockCategory *category in self.stock.categories) {
        [category MR_deleteEntity];
    }

    for (StockOption *option in self.stock.options) {
        [option MR_deleteEntity];
    }

    //it seems below not working
    //self.optionsObject contains an array of Option objects, the same as self.categoriesObject below. 
    //I am sure array contains actual objects in it.
    for (StockOption *option in self.optionsObject) { 
        [self.stock addOptionsObject:option];
    }

    for (StockCategory *cateogry in self.categoriesObject) {
        [self.stock addCategoriesObject:cateogry];
    }

    NSError *error = nil;
    if (![self.stock.managedObjectContext save:&error]) {
        NSLog(@"Unresolved error %@, %@", error, [error userInfo]); //no error displayed. but I have used sqlite app to view it's documents, I can see the optionsObject and categoriesObject are not empty.
    }
}

0 个答案:

没有答案