Core-Dataを使用して、さまざまな情報を保持します。その1つは 'number'属性(Int(16))です。私はデータベースから取り出してみます: number = (int)[info valueForKey:@"number"]
;おかげで任意のヘルプをお願い申し上げ3.アウトコアデータSQLiteデータベースの取得
を返すべきであるとき
は残念ながら、これは常に2895891275のように、いくつかのひどい結果になります!
Core-Dataを使用して、さまざまな情報を保持します。その1つは 'number'属性(Int(16))です。私はデータベースから取り出してみます: number = (int)[info valueForKey:@"number"]
;おかげで任意のヘルプをお願い申し上げ3.アウトコアデータSQLiteデータベースの取得
を返すべきであるとき
は残念ながら、これは常に2895891275のように、いくつかのひどい結果になります!
valueForKey
は、intではなくオブジェクトを返します。明示的にキャストする必要があるという事実は、警告サインでなければなりません。試してみてください:
number = [[info valueForKey:@"number"] intValue];
@duskwuffs答えに展開するには:
コアデータのすべての値がオブジェクトです。たとえば、Int16に属性タイプを設定すると、Core DataはNSNumberオブジェクトを作成します。
このコードは:[info valueForKey:@"number"]
あなたはint型にキャストするNSNumber、オブジェクトのインスタンスを返すため
number = (int)[info valueForKey:@"number"]
...あなたの膨大な数を提供します。 intにオブジェクトをキャストすると、メモリ内のアドレスがintにキャストされ、大きな無意味な数値になります。
'info 'がCore Dataオブジェクトであると仮定して、' number = [info.number intValue] 'を試してみましたか? – justin
コアデータに格納されている値はすべてオブジェクトにラップされます。 – TechZen