gpt4 book ai didi

objective-c - 在这种情况下如何确定是否发生错误(Objective-C)

转载 作者:行者123 更新时间:2023-12-03 16:55:38 25 4
gpt4 key购买 nike

大家好,我有这个功能:

//retrieves checksum within core data store, returns 0 if a checksum has not been stored
-(double)getStoredChecksum {
NSError *error;
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"DataFeedManager" inManagedObjectContext:[self managedObjectContext]];
[fetchRequest setEntity:entity];
NSArray *fetchedObjects = [[self managedObjectContext] executeFetchRequest:fetchRequest error:&error];
//+for (NSManagedObject* item in fetchedObjects) //REMOVE
//+[[self managedObjectContext] deleteObject:item]; //REMOVE FOR CLEARING CHECKSUM CONTENTS

if ([fetchedObjects count] == 0){ //array is empty
NSLog(@"FETCHED OBJECTS IS EMPTY");
checksumStored = NO;
return 0;
}
if (fetchedObjects == nil) {
NSLog(@"Error while fetching\n%@",
([error localizedDescription] != nil) ? [error localizedDescription] : @"Unknown Error");
}
if ([fetchedObjects count] > 1)
NSLog(@"====BAD:Multiple Checksums Retrieved!!!!====");
checksumStored = YES;
double returnable = [[[fetchedObjects objectAtIndex:0] valueForKey:@"lastUpdateCheckSum"] doubleValue];
return returnable;
}//getStoredChecksum()

如您所见,它执行了一个获取请求,但是我不确定如何检查是否发生错误。正如你所看到的,我通过 [fetchedObjects count] == 0 检查数组是否为空,但是,我听说如果发生错误并且数组为零,则返回 0 count 也是如此,因此以这种方式测试数组是否为空是安全的,但它掩盖了我对空数组的检查。因此,问题是我没有确定的方法来检查是否发生错误。关于我应该如何去做这件事有什么想法吗?

提前致谢!

编辑:

在这种情况下我如何检查错误?

NSUInteger numEntities = [[self managedObjectContext] countForFetchRequest:fetchRequest error:&error];

由于 NSUInteger 被指定为无符号整数,因此我什至无法为其分配 -1 值并在以后检查是否为 -1(如果我愿意的话)。

最佳答案

在调用 executeFetchRequest:: 之前将 error 设置为 nil。如果 error 不是 nil,则它被设置,从而发生错误。

count 检查屏蔽 nil 检查的原因是发送到 nil 的任何消息都会返回 nil在本例中也是 0。可以通过首先检查 nil 或修改 if 语句来轻松解决此问题,如下所示:

if (fetchedObjects && [fetchedObjects count] == 0){

对于 countForFetchRequest:: 的情况,发生错误时会返回 NSNotFound,因此只需检查一下即可。

关于objective-c - 在这种情况下如何确定是否发生错误(Objective-C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5428624/

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