Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS中解析基元类型的编码标准_Ios_Iphone_Objective C_Json_Primitive Types - Fatal编程技术网

iOS中解析基元类型的编码标准

iOS中解析基元类型的编码标准,ios,iphone,objective-c,json,primitive-types,Ios,Iphone,Objective C,Json,Primitive Types,在iOS中解析原语类型(int、float、BOOL等),同时将它们存储在dataObjects中以供以后使用的最佳实践是什么 我应该解析它并将其存储为NSNumber,还是仅将其存储为基元类型属性 例如:如果我从服务器获取“userId”作为long类型。这应该是: @property (nonatomic, strong) NSNumber *userId; self.userId = [element objectForKey:@"user_id"]; 或: 谢谢。在我看来,只要你不让

在iOS中解析原语类型(int、float、BOOL等),同时将它们存储在dataObjects中以供以后使用的最佳实践是什么

我应该解析它并将其存储为NSNumber,还是仅将其存储为基元类型属性

例如:如果我从服务器获取“userId”作为long类型。这应该是:

@property (nonatomic, strong) NSNumber *userId;

self.userId = [element objectForKey:@"user_id"];
或:


谢谢。

在我看来,只要你不让他们沉迷于繁重的操作,就把它做成原始形式是一种很好的做法。这对编译器来说少了一个负担。当然,它甚至不需要处理器的时钟周期。但是,当你处理更多的数据时,它会变得更有效。

如果你做了太多的数学运算或其他使用原始数据的事情

而且,您可以创建自己的getter和setter,如

-(long) getuserId
{
  return userID;
}

-(void) setuserId:(long) userId
{
   userID = userId;
}

但是,如果您不做任何复杂的操作,最好使用非原语。因为对像NSNumber这样的对象执行操作非常简单,它们带有预定义的方法来对它们执行操作

这实际上取决于你想要或需要用它做什么。
将其存储为NSNumber会增加一些开销,并为转换为其他值类型和在集合对象中插入等操作带来很多便利

数据类型是数字吗?如果不是,我就不会把它作为一个存储

假设您将
BOOL
存储为
NSNumber
:查看代码的后期开发人员可能会认为以下代码就足够了:

if (_registered) {
// whatever
}
其中,
registed
是一个看起来像
BOOL
NSNumber
,方法是一个“双头”方法:


通过特别选择以“Obj”等词结尾的名称(并对所有此类“混合”属性一致使用该后缀),您不会无意中使用
myBoolObj
,而您的意思是
myBool
。但是,您仍然可以轻松地向NSDictionary和NSArray等分配值。

如果您想将它们存储在NSArray或NSDictionary中,那么NSNumber等显然是一个不错的选择。但为了方便“日常”使用,原语类型更好。测试可能会特别令人沮丧,例如,一个布尔值的NSNumber,却忘了使用它的
boolValue
。你的标题是关于解析的-但是,你的问题与解析无关。如果服务器向您发送JSON,JSON解析器将实际“解析”JSON文本并创建表示。您很可能永远不会亲自解析JSON,这是一个正确的观点。尽管我可以为_registed实现一个get方法,以返回[_registedboolvalue];
if (_registered) {
// whatever
}
@property(nonatomic, strong) NSNumber* myBoolObj;
-(BOOL)myBool;

...

-(BOOL)myBool {
    return myBoolObj.boolValue;
}