iphone - NSInteger,NSNumber "property ' x' 具有 'retain' 属性必须是对象类型“

标签 iphone

我正在开发一个应用程序,其中的数据是从 sqlite 数据库填充的。所有与数据库相关的内容都在 appdelegate 类中完成。我使用 NSMutable 数组来保存对象。 我使用了一个单独的 NSObject 类作为属性。

我收到错误:具有“retain”属性的属性“x”必须是对象类型

我的appdelegate.m文件的代码如下:

NSString *amovieName = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 0)];
NSInteger amovieId = sqlite3_column_int(compiledStatement, 1);
//problem is here the 
//value of movieId is coming from database.
//But error: "must be of object type" is puzzling me. 
//I am assuming to use NSNumber here.

我的 NSObject 文件的代码如下:

在 .h 文件中 -

NSInteger movieId;

其属性为:

@property (nonatomic, retain) NSInteger movieId;

在 .m 文件中 -

@synthesize movieId; 

然后我刚刚初始化为:

-(id)initWithmovieName:(NSString *)mN movieId:(NSInteger)mId 
{    
    self.movieName=mN;  
    self.movieId=mId;  
    return self;  
}

我找到了另一种方法: 在 NSnumber 对象中赋值。然后在 NSInteger 中输入种姓。例如;

NSNumber aNSNumbermovieID = sqlite3_column_int(compiledStatement, 1); 
            NSInteger amovieId = [aNSNumbermovieID integerValue];

但我仍然遇到相同的错误(带有“retain”属性的属性“x”必须是对象类型)。

有什么建议吗?

最佳答案

NSInteger 是标量而不是对象。所以你不应该保留它,应该分配它。更改您的属性将清除警告消息。您不需要执行添加的 NSNumber 操作。

@property (nonatomic, assign) NSInteger movieId;

这有点令人困惑,因为 NSInteger 听起来像一个类,但它只是 int 的 typedef。 Apple 将其作为 64 位支持的一部分引入,以便他们可以将其键入为正在编译代码的处理器的适当大小的整数。

关于iphone - NSInteger,NSNumber "property ' x' 具有 'retain' 属性必须是对象类型“,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5699619/

相关文章:

iphone - 如何在 swift ios 中将图像宽度与屏幕尺寸相匹配

ios - 临时 iOS 应用程序在撤销其签名证书后是否可以运行?

iphone - 禁用自动布局时 MKMapView 不出现

iphone - indexPath.row-1 是 4294967295

iphone - 为 XCode 4 创建 iPhone 项目模板

iphone - iOS 键盘和自定义按钮

iphone - 如何在 iPhone 向下钻取应用程序中处理无限数量的 TableView

iphone - HTML <select> 元素在 iPhone 或 Android 浏览器中被缩写

iphone - 限制在 IOS 中使用捏合手势缩放图像的最大比例

iphone - UIView 控件在动画完成之前不绘制