2013-12-18 16 views
5

iOS(int、float、BOOLなど)でプリミティブ型を解析し、後で使用するためにデータオブジェクトに格納する際のベストプラクティスは何ですか?iOSのプリミティブ型を解析するためのコーディング標準

私はそれを解析し、それをNSNumberとして保存するか、プリミティブ型のプロパティとして保存する必要がありますか?

たとえば、サーバから「userId」を取得する場合は、と入力してください。タイプです。これは次のようになります。

@property (nonatomic, strong) NSNumber *userId; 

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

か:

@property (nonatomic, assign) long userId; 

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

感謝。

+1

NSArrayまたはNSDictionaryに格納する場合は、明らかにNSNumberなどが必要です。しかし、 "毎日の"使用の便宜のために、プリミティブ型はより良いです。特にBOOLのNSNumberや 'boolValue'を取るこ​​とを忘れるなど、特にイライラしたテストが可能です。 –

+0

あなたのタイトルはパーズに関するものですが、あなたの質問は*パース*とは何の関係もありません。サーバーからJSONが送信された場合、* JSONパーサー*は実際にJSONテキストを「解析」して表現を作成します。 JSONを自分で解析するのは大変です。 – CouchDeveloper

答えて

1

私の見解では、大量の操作でそれらを嫌うのではない限り、プリミティブ形式で使用することをお勧めします。これはコンパイラの負担を軽減します。もちろん、プロセッサのクロック・サイクルにコストはかかりません。しかし、より多くのデータに進むと効率的になります。

0

あなたはあまりにも多くの数学的な操作を行うか何かのプリミティブデータを使用している場合...

そして、あなたはあなた自身のゲッターとセッターを作成することができ、

-(long) getuserId 
{ 
    return userID; 
} 

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

のようなしかし、あなたはどんな複雑な操作をしていない場合は、非プリミティブに忠実な方。 NSNumberのようなオブジェクトのオペラ゗ンを実行するのは非常に簡単で、オペレーションを実行するためのあらかじめ定義されたメソッドが付属しています。

0

本当にあなたが何をしたいのか、それとも何が必要なのかによって決まります。 NSNumberとして保存すると、オーバーヘッドが少し増え、他の値の型への変換やコレクションオブジェクトへの挿入などの利便性が向上します。

0

データ型は数字ですか?そうでなければ、私はそれを1つとして保存しません。

あなたはNSNumberとしてBOOLを保存考えてみましょう:あなたのコードを見て、後に、開発者はよく次のコードが十分であることを考えるかもしれない:

registeredBOOLのように見える NSNumberある
if (_registered) { 
// whatever 
} 

。アプローチに

+0

これは有効な点です。私は_registeredのgetメソッドを実装して[_registered boolValue]を返すことができます。 – Lirik

0

は「双頭」ものである:

@property(nonatomic, strong) NSNumber* myBoolObj; 
-(BOOL)myBool; 

... 

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

具体的には、「のObj」などのいくつかの単語で終わる名前をピッキング(そして全てのそのような「ハイブリッド」特性のために一貫してそのサフィックスを使用して)であなたはの意味を間違って使用してはなりません。myBool。しかし、NSDictionariesやNSArraysなどに簡単に値を割り当てることができるという利点があります。

関連する問題