gpt4 book ai didi

iphone - 在 Core Data 中按属性获取对象

转载 作者:太空狗 更新时间:2023-10-30 03:25:33 26 4
gpt4 key购买 nike

在我的 iPhone 项目中,我想编写一个函数来检查我的 Core Data ManagedObjectContext 中是否有一个对象具有特定属性的给定值,比如 some_property

如果已经有一个some_property == 12 的对象,我希望函数返回该对象,否则,我想创建该对象,或者至少返回nil.

我该怎么做?

最佳答案

以下代码片段显示了如何检索与特定谓词匹配的对象。如果没有这样的对象,该片段显示了如何创建一个新对象,保存并返回它。

    NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"YourEntityName" inManagedObjectContext:managedObjectContext];
[request setEntity:entity];
// retrive the objects with a given value for a certain property
NSPredicate *predicate = [NSPredicate predicateWithFormat: @"property == %@", value];
[request setPredicate:predicate];

// Edit the sort key as appropriate.
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"yourSortKey" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[request setSortDescriptors:sortDescriptors];



// Edit the section name key path and cache name if appropriate.
// nil for section name key path means "no sections".
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:managedObjectContext sectionNameKeyPath:nil cacheName:@"Root"];
aFetchedResultsController.delegate = self;

NSError *error = nil;
NSArray *result = [managedObjectContext executeFetchRequest:request error:&error];

[request release];
[sortDescriptor release];
[sortDescriptors release];


if ((result != nil) && ([result count]) && (error == nil)){
return [NSMutableArray arrayWithArray:result];
}
else{
YourEntityName *object = (YourEntityName *) [NSEntityDescription insertNewObjectForEntityForName:@"YourEntityName" inManagedObjectContext:self.managedObjectContext];
// setup your object attributes, for instance set its name
object.name = @"name"

// save object
NSError *error;
if (![[self managedObjectContext] save:&error]) {
// Handle error
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);

}

return object;

}

关于iphone - 在 Core Data 中按属性获取对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1438587/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com