2011-06-22 6 views
0

Core-Dataを使用して、さまざまな情報を保持します。その1つは 'number'属性(Int(16))です。私はデータベースから取り出してみます: number = (int)[info valueForKey:@"number"];おかげで任意のヘルプをお願い申し上げ3.アウトコアデータSQLiteデータベースの取得

を返すべきであるとき

は残念ながら、これは常に2895891275のように、いくつかのひどい結果になります!

+1

'info 'がCore Dataオブジェクトであると仮定して、' number = [info.number intValue] 'を試してみましたか? – justin

+0

コアデータに格納されている値はすべてオブジェクトにラップされます。 – TechZen

答えて

7

valueForKeyは、intではなくオブジェクトを返します。明示的にキャストする必要があるという事実は、警告サインでなければなりません。試してみてください:

number = [[info valueForKey:@"number"] intValue]; 
1

@duskwuffs答えに展開するには:

コアデータのすべての値がオブジェクトです。たとえば、Int16に属性タイプを設定すると、Core DataはNSNumberオブジェクトを作成します。

このコードは:[info valueForKey:@"number"]あなたはint型にキャストするNSNumber、オブジェクトのインスタンスを返すため

number = (int)[info valueForKey:@"number"] 

...あなたの膨大な数を提供します。 intにオブジェクトをキャストすると、メモリ内のアドレスがintにキャストされ、大きな無意味な数値になります。

関連する問題