2

100と比較する必要のある文字列dummyStringがあります。これが私のコードです

  dummyString = [prefs objectForKey:@"displaySize"];
[self setDisplaySize:dummyString];
NSLog(@"Getting ready to set display controller with value %@", dummyString);


NSLog(@"Tried 1");
if ([dummyString isEqual: @"5"]) {
    NSLog(@"Loaded preferences, display Small");
    displayChanged.selectedSegment = 0;}

NSLog(@"Tried 2");
if ([dummyString isEqual: @"40"]){
    NSLog(@"Loaded preferences, display is Med!");
        displayChanged.selectedSegment = 1;}

NSLog(@"Tried 3");
if ([dummyString isEqualToString:@"100"]){
    NSLog(@"Loaded preferences, display LARGE");
    displayChanged.selectedSegment = 2;}

NSLog(@"Completed trying to get display controller with value %@", dummyString);

これがNSLogです

2013-03-26 17:22:49.101 CopyBot[1011:303] Getting ready to set display controller with value 100
 2013-03-26 17:22:49.102 CopyBot[1011:303] Tried 1
 2013-03-26 17:22:49.102 CopyBot[1011:303] Tried 2
 2013-03-26 17:22:49.102 CopyBot[1011:303] Tried 3
 2013-03-26 17:22:49.103 CopyBot[1011:303] -[__NSCFNumber isEqualToString:]: unrecognized selector sent to instance 0x64c7
 2013-03-26 17:22:49.103 CopyBot[1011:303] -[__NSCFNumber isEqualToString:]: unrecognized selector sent to instance 0x64c7

さまざまな文字列を宣言するいくつかのバリエーションを試しましたが、isEqualまたはisEqualToStringを比較するために「if」ステートメントを入力することはできないようです。どんな助けでも大歓迎です。

4

2 に答える 2

3

エラーメッセージでわかるように[__NSCFNumber isEqualToString:]: unrecognized selector...、問題はメソッド__NSCFNumberがないことです。isEqualToString

__NSCFNumberNSNumberこれが、Cocoaが実行時にほとんどのを表す方法です。

したがって、問題は、dummyStringが文字列ではなく、文字列であるということです。NSNumber

于 2013-03-27T00:30:20.863 に答える
3

あなたのエラーによると、あなたdummyStringNSString確かにそうではありませんNSNumber

@"5"文字列をに変換してNSNumberから比較することができます:

BOOL equal=[dummyString isEqualToNumber:@([@"5" integerValue])];

または。ダミー文字列値を文字列に変換してから、以下を比較します。

BOOL equal=[NSString stringWithFormat:@"%d",[dummyString integerValue]] isEqualToString:@"5"];
于 2013-03-27T00:39:09.243 に答える