NSNumber采用64位架构和核心数据

时间:2015-03-25 05:42:59

标签: ios iphone core-data nsnumber

我在核心数据类中使用NSNumber作为属性,如下所示。

@property (nonatomic, retain) NSNumber * favStatus;

在实际应用程序中,我将对象检索并存储在循环中的字典中,并将它们添加到数组中。

NSMutableDictionary *msgDictionary = [[NSMutableDictionary alloc] init];
Deal *obj=(Deal *)[fetchedDealObjects objectAtIndex:i];
msgDictionary=[NSMutableDictionary dictionaryWithObjectsAndKeys:
                           obj.dealId, @"dealId",
                           obj.dealName, @"dealName",
                           obj.senderName, @"senderName",
                           obj.dealMessage, @"dealMessage",
                           obj.imageStatus, @"imageStatus",
                           obj.imageName, @"imageName",
                           obj.dealType, @"dealType",
                           obj.remindStatus, @"remindStatus",
                           obj.readStatus, @"readStatus",
                           obj.dealdate,@"dealDate",
                           obj.favStatus, @"favStatus",
                           obj.dealAddr,@"dealAddr",
                           //obj.dealdate,@"dealDate",
                           obj.dealEndDate,@"dealEndDate",
                           nil];

现在我使用循环读取数组并检查favStatus字段的值如下所示。

if ([[allDealsArray objectAtIndex:indexPath.row]valueForKey:@"favStatus"]==[NSNumber numberWithInt:0]) {
//number 0 found in core data
}else{
//number 0 not found in the core data
}

我的问题是虽然核心数据表中的值为0,但64位架构电话不会将它们识别为0.它始终转到else块。

但它在iPhone 5和之前的型号(非64位架构)中运行良好。

有没有人遇到过这个问题?提前谢谢。

1 个答案:

答案 0 :(得分:1)

使用NSNumber,您应该使用isEqualToNumber:方法而不是'==' 在这种情况下,我认为你应该尝试:

int favStatusVal = [[[allDealsArray objectAtIndex:indexPath.row]valueForKey:@"favStatus"] intValue];
if (favStatusVal == 0) {
//number 0 found in core data
}else{
//number 0 not found in the core data
}