【问题标题】:Update in CoredataCoredata 中的更新
【发布时间】:2015-12-28 11:26:26
【问题描述】:

我有一个设备实体,其中数据样本

data: {
    company = ddd;
    name = jje;
    version = dd;
})

我想更新公司等于 ddd 的名称。 这是我的代码。请帮助

-(IBAction)update:(id)sender
{
    NSManagedObjectContext *managedObjectContext = [appdelegate managedObjectContext];
    NSEntityDescription *entityDescriptionDelegate = [NSEntityDescription entityForName:@"Device" inManagedObjectContext:managedObjectContext];
    NSFetchRequest *requestData = [[NSFetchRequest alloc] init];
        [requestData setReturnsObjectsAsFaults:NO];
    [requestData setEntity:entityDescriptionDelegate];
    NSError *error;
    NSArray *objectsArray = [managedObjectContext executeFetchRequest:requestData error:&error];

    for (NSManagedObject *object in objectsArray) {

        NSLog(@"%@",object);
        NSLog(@"%@",objectsArray);

    }

【问题讨论】:

    标签: ios objective-c iphone core-data


    【解决方案1】:
    -(IBAction)update:(id)sender
     {
      NSManagedObjectContext *managedObjectContext = ((AppDelegate *)[[UIApplication sharedApplication] delegate]).managedObjectContext;
    NSEntityDescription *entityDescriptionDelegate = [NSEntityDescription entityForName:@"Device" inManagedObjectContext:managedObjectContext];
      NSFetchRequest *requestData = [[NSFetchRequest alloc] init];
      [requestData setReturnsObjectsAsFaults:NO];
      [requestData setEntity:entityDescriptionDelegate];
      NSError *error;
      NSArray *objectsArray = [managedObjectContext executeFetchRequest:requestData error:&error];
    
    
      for (NSManagedObject *object in objectsArray) {
        [object setValue:@"Updated Name" forKey:@"name"];
        [object setValue:@"Updated version" forKey:@"version"];
      }
    
    
      if (![managedObjectContext save:&error]) {
        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
      }
     }
    

    【讨论】:

      【解决方案2】:

      希望对您有所帮助。将 YOUR_VALUE 文本更改为实际值

      -(IBAction)update:(id)sender
      {
          NSManagedObjectContext *managedObjectContext = [appdelegate managedObjectContext];
          NSEntityDescription *entityDescriptionDelegate = [NSEntityDescription entityForName:@"Device" inManagedObjectContext:managedObjectContext];
          NSFetchRequest *requestData = [[NSFetchRequest alloc] init];
          [requestData setReturnsObjectsAsFaults:NO];
          [requestData setEntity:entityDescriptionDelegate];
          [requestData setPredicate:[NSPredicate predicateWithFormat:@"company == YOUR_VALUE"]];
      
          NSError *error;
          NSArray *objectsArray = [managedObjectContext executeFetchRequest:requestData error:&error];
      
          for (Device *object in objectsArray) {
              object.name = @"YOUR_VALUE";
              object.version = @"YOUR_VALUE";
      
              [managedObjectContext save:&error];
          }
      }
      

      【讨论】:

      • for (Device *object in objectsArray) {
      • 这一行的设备是什么。
      • 您可以通过 Xcode 使用您的实体生成此对象。选择你的 .xcdatamodeld 文件,然后选择 Editor -> Create NSManagedObject Subclass...
      【解决方案3】:

      只需按如下方式更改for循环

       for (Device *object in objectsArray) {
                  object. company = @"newName";
              }
       [self.managedObjectContext save:nil];
      

      【讨论】:

      • 什么是设备设备是我的实体名称
      • 它的 entityName 有问题 [NSEntityDescription entityForName:@"Device" inManagedObjectContext:managedObjectContext]; NSFetchRequest *requestData = [[NSFetchRequest alloc] init]
      猜你喜欢
      • 1970-01-01
      • 2015-09-04
      • 2019-08-22
      • 2012-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-13
      • 2012-09-25
      相关资源
      最近更新 更多