与整数转换不兼容的指针将'NSNumber *'发送到'long'类型的参数

时间:2013-10-27 18:39:31

标签: ios pointers

我正在将我的iOS 6应用程序转换为在iOS 7中运行。它使用CoreData,在我的模型中我定义了一些实体和属性。其中一个属性是deliveryid,类型设置为Integer 32。

我为我的核心数据实体创建了NSManagedObject类,这些在以前的iOS 6 XCode 5中运行良好。

当我将这些NSManagedObject类转移到目标iOS 7时,我得到错误“不兼容的指向整数转换的指针'NSNumber *'到'long'类型的参数”。

对于deliveryid属性,它在.h文件中定义如下:

@property (nonatomic, strong) NSNumber * deliveryid;

然后在.m文件中我有:

NSString *strDeliveryID = [[NSNumber numberWithLong:self.deliveryid] stringValue];

我尝试转换为字符串值。以前在编译时没有产生任何警告或问题。

我无法解决为什么问题出现在iOS 7上。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:3)

self.deliveryid已经是NSNumber*。没有理由从中创建新的NSNumber*。使用此:

NSString *strDeliveryID = self.deliveryid.stringValue;

另一个选择是以下,这是愚蠢和混乱:

NSString *strDeliveryID = @(self.deliveryid.longValue).stringValue;

答案 1 :(得分:2)

您可以尝试:

NSString *strDeliveryID = [NSString stringWithFormat:@"%@",deliveryid];