我在实体中有布尔值,值都显示为0。 获取值,无论我总是返回一个TRUE值。 这是代码,问题可能在最后两行代码中。
我做错了什么?
-(NSInteger)getStatus:(NSString*)nameID;
{
**//Fetch Request**
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity =
[NSEntityDescription entityForName:@"status"
inManagedObjectContext:[self managedObjectContext]];
[fetchRequest setEntity:entity];
NSPredicate *predicate = [NSPredicate
predicateWithFormat:@"id_Name = %@", nameID];
[fetchRequest setPredicate:predicate];
NSError *error = nil;
NSArray *fetchedObjects = [[self managedObjectContext] executeFetchRequest:fetchRequest error:&error];
if (fetchedObjects == nil) {
}
**//Values**
status *ENT_status;
ENT_status = [fetchedObjects objectAtIndex:0];
//Either way, both these lines return YES when it would be NO
//------------------------------------------------------------------
BOOL one = ENT_status.status_one;
NSNumber *two = [NSNumber numberWithBool:ENT_status.status_two];
答案 0 :(得分:3)
默认情况下,布尔值在托管对象中表示为NSNumber
个对象。
所以你可以按原样使用它:
NSNumber *one = ENT_status.status_one;
或将其转换为普通(标量)BOOL
:
BOOL one = [ENT_status.status_one boolValue];
(在您的代码中,指针 ENT_status.status_one
始终被解释为YES
。)
或者,您可以使用“为原始数据类型使用标量属性”选项 在Xcode中创建托管对象子类时。
答案 1 :(得分:0)
我知道它有点晚了,可能没有人再使用Objective-C但是我遇到了这个问题,对我有用的是:
从object:
中检索布尔值BOOL myBool = [[myManagedObject valueForKey:@"myKey"] boolValue];
并设置新值:
myManagedObject.myKey = @YES;