gpt4 book ai didi

objective-c - NSFetchRequest 什么都不返回

转载 作者:搜寻专家 更新时间:2023-10-30 20:10:32 25 4
gpt4 key购买 nike

谁能发现为什么这不返回任何 ManagedObjects?我正在尝试将以下内容添加到 ATNSManagedObject+EasyFetching 类中,但提取结果不返回任何内容。如果我在 EasyFetch 类之外获取这些对象,我有 100 多个对象,所以我知道它不是空的 CoreData。

+ (void)deleteAllObjectsInContext;
{
NSManagedObjectContext *context = [NSManagedObjectContext defaultContext];
NSEntityDescription *entity = [self entityDescriptionInContext:context];
NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];
[request setEntity:entity];
//[request setIncludesPropertyValues:NO];

NSError *error = nil;
NSArray *results = [context executeFetchRequest:request error:&error];
if (error != nil)
{
//handle errors
NSLog(@"delete error");
}

for (NSManagedObject *thing in results) { <--- |results shows 0 objects|
[context deleteObject:thing];
}

NSError *saveError = nil;
[context save:&saveError];
}

最佳答案

尝试将其简化为:

// first get the context or pass it in as an argument (this is usually what I do for
// a deleteAll class level method like this but your call

+ (void)deleteAllObjectsInContext:(NSManagedObjectContext*)context {

NSFetchRequest* request = [NSFetchRequest fetchRequestWithEntityName:@ "<yourEntity>"];
// no predicate
// no sortDescriptors

NSError* error = nil;
NSArray* results = [context executeFetchRequest:request error:&error];

if (!results || error) { // nil is an error
// handle error
}

// do something with results

}

这样您就可以避免检索 NSEntityDescription 对象。

更新:

只是想添加这个 passage :

返回值

“从接收方和与接收方的持久存储协调器关联的持久存储中获取的符合请求指定条件的对象数组。如果发生错误,返回 nil。如果没有对象符合请求指定的条件,返回一个空数组”。

关于objective-c - NSFetchRequest 什么都不返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11053974/

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