0

好的,所以我已经尝试了苹果 SDK 开发者页面上的示例,但没有成功。我尝试了之前关于stackoverflow的问题的示例,例如:

NSEntityDescription  entitydesc = [NSEntityDescription entityForName:@"Model" inManagedObjectContext:context];
NSFetchRequest request = [[NSFetchRequest alloc]init];
[request setEntity:entitydesc];

//尝试了这种风格的谓词

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"accessible == %@", [NSNumber numberWithBool:YES]];

//和这个

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"accessible == YES"];
[request setPredicate: predicate];

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

两者都不起作用。在调试器中,matchingData 应该有很多对象时显示 0 个对象。

我所有其他的 fetchrequests 都工作得很好。这是唯一给我带来问题的。

该属性在 .xcdatamodel 中列为布尔类型

该属性在实体的头文件下如下所示:

@property (nonatomic, retain) NSNumber * accessible;

数据输入核心数据数据库如下:

NSNumber *accessibleFieldValue  = [NSNumber numberWithBool:YES];
[newModel setValue: accessibleFieldValue forKey:@"accessible"];

我已经检查过了,sqlite 数据库中没有输入 nil 值。

我应该怎么办?

4

3 回答 3

1

它适用于新的文字:

 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"done = %@",@NO];
于 2013-01-23T12:43:43.467 回答
0

我最终在 sqlite 数据库浏览器中访问数据库并将字段值的类型更改为 Numeric。出于某种原因,核心数据作为不兼容的数据类型输入数据......不知道为什么,但我觉得这可能是一个 Xcode 错误。正如我所说,在我更改字段类型后它现在可以工作了。我认为我不会很快在核心数据中使用布尔值......至少在我理解为什么这是一个问题之前不会。

于 2012-12-05T16:15:49.597 回答
0
NSNumber *accessibleFieldValue  = [NSNumber numberWithBool:YES];
[newModel setValue:accessibleValue forKey:@"accessible"];

accessibleFieldValue还是accessibleValue?如果您确定这段代码是正确的,那就是您做错了。

顺便说一句,您可以像这样设置值:

newModel.accessible = [NSNumber numberWithBool:YES];
于 2012-12-05T02:17:19.667 回答