更新Core Data对象而不是插入新对象

时间:2014-06-09 04:08:54

标签: ios objective-c core-data

我正在尝试更新当前的CoreData对象,但是当我使用我的write方法时,它只是将另一个对象添加到数据库中,所以当我尝试读取对象时,我会根据对象的使用时间长短地返回几十个对象。

这是我的代码

#pragma mark -- Write
- (void)writeSeriesSearchObj:(NSMutableDictionary *)SearchDic Name:(NSString *)name
{
    // WRITE TO CORE DATA
    NSManagedObjectContext *context = [self managedObjectContext];

    SeriesSearchObj *searchObj = [NSEntityDescription insertNewObjectForEntityForName:@"SeriesSearchObj" inManagedObjectContext:context];


    if ([name isEqualToString:@"Code"]) {
        searchObj.code = [SearchDic objectForKey:@"Code"];
    } else if ([name isEqualToString:@"Name"]) {
        searchObj.name = [SearchDic objectForKey:@"Name"];
    } else if ([name isEqualToString:@"Model"]) {
        searchObj.modelID = [SearchDic objectForKey:@"ModelID"];
    }

    NSError *error = nil;
    [self.managedObjectContext save:&error];

    // test
    NSMutableArray *temptestA = [self readSearchObj];
    NSLog(@"%@", temptestA);

}

我怀疑使用 insertNewObjectForEntityForName 我出错了但是我不确定如何编写此方法以便每次都更新同一个对象?

1 个答案:

答案 0 :(得分:1)

SeriesSearchObj *searchObj = [NSEntityDescription insertNewObjectForEntityForName:@"SeriesSearchObj" inManagedObjectContext:context];

总会给你一个新对象。 使用NSFetch获取现有对象,然后更新它。