我正在将我的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出现此问题的原因。有人可以帮忙吗?

最佳答案

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

NSString *strDeliveryID = self.deliveryid.stringValue;

另一个选择如下,这很愚蠢和令人困惑:
NSString *strDeliveryID = @(self.deliveryid.longValue).stringValue;

关于ios - 向整数转换发送不兼容的指针,将“NSNumber *”发送到“long”类型的参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19621881/

10-12 15:49