gpt4 book ai didi

带有谓词的 ios 核心数据错误

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

我的核心数据有一些奇怪的行为。

我有实体 Card,它有 NSNumber 属性 idObject

当我想更改此卡片中的某些信息时,我尝试在我的 CoreData 中找到类似的卡片,但有时它有效,有时无效。我的意思是下一个:

NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Card"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"idObject == %@", objectId];
request.predicate = predicate;
NSError *error;
NSArray *objects = [self.backgroundManagedObjectContext executeFetchRequest:request error:&error];

有时这段代码会返回对象数组,但有时会返回 nil。我在上一段代码之后添加下一段代码:

request.predicate = nil;
NSArray *cards = [self.backgroundManagedObjectContext executeFetchRequest:request error:nil];

错误总是零,所以一切都一定没问题。cards 数组有 CardidObject,我试图找到它。所以最后,如果我们尝试多次执行下一段代码:

NSLog(@"idObject -%@-", objectId);
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Card"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"idObject == %@", objectId];
request.predicate = predicate;
NSError *error;
NSArray *objects = [self.backgroundManagedObjectContext executeFetchRequest:request error:&error];
NSLog(@"objects count = %i", objects.count);
request.predicate = nil;
NSArray *cards = [self.backgroundManagedObjectContext executeFetchRequest:request error:nil];
NSLog(@"\nCards:");
for (Card *card in cards) {
NSLog(@"id -%@-", card.idObject);
}

所以我们有下一个结果。在第一时间你可以看到下一个:

2014-03-10 11:58:47.115[4397:6613] idObject -1-
2014-03-10 11:58:47.127[4397:6613] objects count = 1
2014-03-10 11:58:47.134[4397:6613]
Cards:
2014-03-10 11:58:47.145[4397:6613] id -5-
2014-03-10 11:58:47.146[4397:6613] id -4-
2014-03-10 11:58:47.148[4397:6613] id -1-
2014-03-10 11:58:47.148[4397:6613] id -2-
2014-03-10 11:58:47.149[4397:6613] id -6-
2014-03-10 11:58:47.150[4397:6613] id -8-
2014-03-10 11:58:47.151[4397:6613] id -7-
2014-03-10 11:58:47.152[4397:6613] id -3-

第二个它返回我:

2014-03-10 11:59:42.752[4397:9e2b] idObject -1-
2014-03-10 11:59:42.758[4397:9e2b] objects count = 0
2014-03-10 11:59:42.761[4397:9e2b]
Cards:
2014-03-10 11:59:42.762[4397:9e2b] id -1-
2014-03-10 11:59:42.764[4397:9e2b] id -5-
2014-03-10 11:59:42.766[4397:9e2b] id -2-
2014-03-10 11:59:42.768[4397:9e2b] id -6-
2014-03-10 11:59:42.769[4397:9e2b] id -8-
2014-03-10 11:59:42.771[4397:9e2b] id -3-
2014-03-10 11:59:42.773[4397:9e2b] id -4-
2014-03-10 11:59:42.775[4397:9e2b] id -7-

所以我在 cards 数组中总是有 Card 和这样的 idObject,但为什么使用我的谓词,它有时会返回我那张卡片,有时不?怎么了?

最佳答案

Card实体属性idObjectNSNumber的类型,将predicate中的idObject改为NSNumber IE。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"idObject == %@", [NSNumber numberWithInt:[idObject integerValue]]];

或使用NSNumberFormatteridObject 更改为NSNumber

希望对你有帮助

关于带有谓词的 ios 核心数据错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22295831/

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