0

Core Data には、整数である userId という 1 つのフィールドを持つテーブルが 1 つあります。

私はそれを正常に取得し、次のコードでIDに割り当てました:

id userId2 = [info valueForKey:@"userId"];

info は私の NSManagedObject であり、userId2 は ID です。次に、userId2 を文字列に変換します。次のことが直接できることを読みました。

NSString *userId3 = userId2;

しかし、文字列とuserId3の間でifチェックを実行すると、同じ値であってもチェックが失敗します。

もう1つ、Xcodeは、デバッグモードではuserIdがCFStringではないと言います。


私の解決策は、次の方法で両方の変数を double に変換することでした。

double myDouble = [userId3 doubleValue];

他の提案はありますか?

4

2 に答える 2

2

userIdフィールドが数値の場合、そうではありませんNSStringが、NSNumber。この単純なケースでは、...を使用できます。

NSString *userId3 = [userId2 stringValue];

... また ...

NSString *userId3 = [NSString stringWithFormat:@"%d", [userId2 intValue]];

...そして文字列の比較はこの方法で行う必要があります...

if ( [str1 isEqualToString:str2] ) {
}
于 2012-07-24T12:27:12.687 に答える
0

NSStringは素敵なクラスであり、特に数値をNSStringとして表示したい場合は、ドキュメント内で非常に多くの情報を利用できます。

NSNumber、NSDecimalNumberなどに慣れていない場合は、int、float、doubleを使用して、NSNumber + NSDecimalNumberを処理すると、少し混乱します。

私は「それをつぼみに挟む」ことを後でではなく早くすることをお勧めします!

于 2012-07-25T15:25:14.713 に答える