【问题标题】:Update CoreData object instead of inserting new object更新 CoreData 对象而不是插入新对象
【发布时间】:2014-06-09 04:08:53
【问题描述】:

我正在尝试更新当前的 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 时出错了,但是我不确定如何编写此方法以便每次都更新同一个对象?

【问题讨论】:

标签: ios objective-c core-data


【解决方案1】:
SeriesSearchObj *searchObj = [NSEntityDescription insertNewObjectForEntityForName:@"SeriesSearchObj" inManagedObjectContext:context];

总是会返回一个新对象。 使用 NSFetch 获取现有对象,然后对其进行更新。

【讨论】:

  • 如果我第一次使用 fetch 但还没有对象会怎样?
  • 我刚刚创建了一个 if 语句,如果 NSFetch 没有带回任何东西(通常是第一次)然后我 insertNewObjectForEntityForName 等。然后我总是使用 fetch。
猜你喜欢
  • 1970-01-01
  • 2014-01-31
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 2017-02-25
  • 1970-01-01
相关资源
最近更新 更多