0

アプリはコアデータからデータを取得してから、値の1つをIFステートメントと比較する必要があります

MyAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
        NSManagedObjectContext *context = [appDelegate managedObjectContext];


        NSEntityDescription *getDetails = [NSEntityDescription entityForName:@"Detail" inManagedObjectContext:context];
        NSFetchRequest *request = [[NSFetchRequest alloc] init];

        [request setEntity:getDetails];
        NSPredicate *pred = [NSPredicate predicateWithFormat:@"(genID = %i)", genID];
        [request setPredicate:pred];

        NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"genID" ascending:YES];
        [request setSortDescriptors:[NSArray arrayWithObject:sort]];


        NSError *error;
        NSArray *objects = [context executeFetchRequest:request error:&error];

        for (NSManagedObject *oneObject in objects) {   



            NSString *type = [oneObject valueForKey:@"type"];


            if (type == @"straight") {
                NSLog(@"straight");
                //straight logic removed
            }else if (type == @"Left") {
                NSLog(@"Left");
                //Left logic removed
            }else {
                NSLog(@"Else");
                //Else logic removed

            }


            }

問題は、それが常にELSEに「まっすぐ」または「左」になることは決してないということです。コードをステップスルーすると、値がまっすぐ左に一致していることがわかります。ログファイルにダンプしても、問題なく表示されます。なにが問題ですか?

4

1 に答える 1

1

isEqual:またはisEqualToString:またはを使用して文字列を比較する必要がありますcompare:

例えば:

NSString *type = [oneObject valueForKey:@"type"];
if ([type isEqualToString:@"straight"])
    // etc.

さらに説明が必要な場合は、StackOverflowで「NSStringequal」または「NSStringcompare」を検索してください。あなたはこの質問をする最初の人の近くにいません、そしてあなたは間違いなく最後ではありません。

于 2012-05-15T19:45:20.423 に答える