詹姆斯,
我将尝试用示例代码回答您的两个问题。
要更新特定对象,您需要使用谓词设置新的NSFetchRequest,获取对象(NSManagedObject 类型),更新您感兴趣的值并保存上下文。
所以,例如:
NSFetchRequest* fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"YourEntityName"];
// set the predicate (it's equal to set a WHERE SQL clause) filtering on the name for example
// use camel case notation if possible, so instead of Name use name (for this you have to changes your model, if you don't want to do it use Name)
[fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"name == %@", @"Joseph"]];
NSError* error = nil;
NSArray* results = [context executeFetchRequest:fetchRequest error:&error];
// do some error checking here...
for (NSManagedObject resultItem in results) {
// use KVC (for example) to access your object properties
[resultItem setValue:@"myName" forKey:@"name"];
}
// save your context here
// if you don't save, changes are not stored
要打印,您需要设置一个新的NSFetchRequest,抓取对象(NSManagedObject 类型)并使用NSLog。
例如:
NSFetchRequest* fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"YourEntityName"];
NSError* error = nil;
NSArray* results = [context executeFetchRequest:fetchRequest error:&error];
// do some error checking here...
for (NSManagedObject resultItem in results) {
NSLog(@"%@", [resultItem valueForKey:@"name"]);
}
附:我提供的代码非常简单,我用于特定值的谓词检查name。由于这可能容易出错,我会修改模型并为您需要使用的每个对象使用一种guid(我不知道 id 是否适用,但我会将其名称更改为另一个名称,例如userId)。完成后,您可以对其进行检查。
希望对您有所帮助。