如何更新核心数据输入的值

时间:2013-09-27 14:20:45

标签: ios core-data attributes entity insert-update

[newVehicle setValue: _txtFieldVehicleNumber.text forKey:@"number"];

[newVehicle setValue: lblFuelType.text forKey:@"fueltype"];

[newVehicle setValue: lblFuelUnit.text forKey:@"fuelunit"];

[newVehicle setValue: lblDistanceUnit.text forKey:@"distanceunit"];

我想更新名为“Vehicle”的核心数据实体,对于该实体,我有几个属性,我想更新其中一些但不是全部,当我从实体中选择特定属性时。 那我该怎么办?

2 个答案:

答案 0 :(得分:17)

您可以执行以下操作(近似代码。实现错误处理和检查语法)。

NSFetchRequest *fetchRequest=[NSFetchRequest fetchRequestWithEntityName:@"Vehicle"];
NSPredicate *predicate=[NSPredicate predicateWithFormat:@"vehicle_id==%@",vehicle_id]; // If required to fetch specific vehicle
fetchRequest.predicate=predicate;
Vehicle *newVehicle=[[self.managedObjectContext executeFetchRequest:fetchRequest error:nil] lastObject];

[newVehicle setValue: _txtFieldVehicleNumber.text forKey:@"number"];

[newVehicle setValue: lblFuelType.text forKey:@"fueltype"];

[newVehicle setValue: lblFuelUnit.text forKey:@"fuelunit"];

[newVehicle setValue: lblDistanceUnit.text forKey:@"distanceunit"];

[self.managedObjectContext save:nil]

答案 1 :(得分:3)

从核心数据中获取实体:

VVdAppDelegate *delegate = (VVdAppDelegate *)[[UIApplication sharedApplication] delegate];
NSManagedObjectContext *managedObjectContext = [delegate managedObjectContext];
NSEntityDescription *entityDescriptionDelegate = [NSEntityDescription entityForName:@"entityName" inManagedObjectContext:managedObjectContext];
NSFetchRequest *requestData = [[NSFetchRequest alloc] init];
[requestData setEntity:entityDescriptionDelegate];
NSError *error;

如果有多个NSManagedObject

NSArray *objectsArray = [managedObjectContext executeFetchRequest:requestData error:&error];

for (NSManagedObject *object in objectsArray) {

        // Here update values of every object

}

// And save values to core data
[managedObjectContext save:&error];