我收到标题错误,但我不知道为什么......
。H
@interface ItemData : NSObject
@property (nonatomic,assign) NSInteger tagId;
@property (nonatomic,strong) NSMutableString *deviceId;
@property (nonatomic,strong) NSDecimal *latitude;
@property (nonatomic,strong) NSDecimal *longitude;
@end
Run Code Online (Sandbox Code Playgroud)
.米
#import <Foundation/Foundation.h>
#import "ItemData.h"
@implementation ItemData
-(id)init
{
if(self = [super init])
{
//TODO: Fix Commented out items
_tagId = [[NSInteger alloc] init];
_deviceId = [[NSMutableString alloc] init];
_latitude = [[NSDecimal alloc] init];
_longitude = [[NSDecimal alloc] init];
}
return self;
}
@end
Run Code Online (Sandbox Code Playgroud)
我不明白我做错了什么......有人可以帮助我吗?
NSInteger和NSDecimal不是类,而是标量的类型。您不能向这种类型的“对象”(在 C 意义上,而不是在 OOP 意义上)发送消息。因此,您不要使用+alloc和来构造它们-init\xe2\x80\xa6。
你有两种可能性:
\n\nA. 使用 (OOP) 对象代替标量
\n\n@property (nonatomic,assign) NSNumber *tagId;\n@property (nonatomic,strong) NSDecimalNumber *latitude;\nRun Code Online (Sandbox Code Playgroud)\n\n然后您可以像往常一样分配对对象的引用:
\n\n_tagId = @0; // Or whatever you want.\n_latitude = [NSDecimalNumber zero];\nRun Code Online (Sandbox Code Playgroud)\n\nB. 简单地赋值
\n\n_tagId = 0; // Or whatever you want. There is no nil for integers\nRun Code Online (Sandbox Code Playgroud)\n\n这对于整数很有用,但对于小数则不好,因为它们是带有struct私有组件的并且没有函数来创建它们。但是,您可以创建一个NSDecimalNumber实例对象(如 A. 中所示)并使用 获取十进制值-decimalValue。
_latitude = [[NSDecimalNumber zero] decimalValue];\nRun Code Online (Sandbox Code Playgroud)\n\n的用法NSDecimal对我来说似乎是错误的。为什么要使用它?通常,经度和纬度是double另一种标量类型,可以将其视为带有值的整数。十进制浮点对象用于财务软件。
| 归档时间: |
|
| 查看次数: |
9271 次 |
| 最近记录: |