if语句没有返回任何内容

aku*_*tsu 0 string if-statement cocos2d-iphone ios

完整的代码在这里: http ://pastebin.com/rdjDGLJS

编辑:最新的代码片段取自原始海报评论

NSMutableString *spriteType;


- (void) pickSpriteType {

    randomSpriteNumber = arc4random() % 2+1;

    switch (randomSpriteNumber) {
        case 1:
            spriteType = [NSMutableString stringWithFormat:@"typeOne"];
            break;

        case 2:
            spriteType = [NSMutableString stringWithFormat:@"typeTwo"];
            break;
    }
}


- (void) findSpriteNumber {

    levelNumberString = [NSMutableString stringWithFormat:@"%d",levelNumber];

    NSString *path = [[NSBundle mainBundle] pathForResource:@"plist_enemies" ofType:@"plist"];
    NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:path];
    spriteNumber = [[[dict objectForKey:spriteType] objectForKey:levelNumberString] intValue];
}


- (void) initSprite {
    [self moveUp];
    for(int i = 0; i<spriteNumber; i++) {
        if ([spriteType isEqualToString:@"typeOne"]) {
            NSLog(@"repeat");
        }
        if ([spriteType isEqualToString:@"typeTwo"]) {
            NSLog(@"repeat");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

原始邮寄:

我正在使用带有NString的if语句,使用以下代码:

- (void) initSprite {
    for(int i = 0; i<spriteNumber; i++) {
        if (spriteType == @"typeOne") {
            NSLog(@"repeat");
        }   
    }  
}
Run Code Online (Sandbox Code Playgroud)

它应该记录"重复"'spriteNumber'的次数,只要字符串'spriteType'具有'typeOne'的内容,但没有任何反应.它不记录"重复",但也没有任何错误.字符串'sprite type'的内容绝对是'typeOne',spriteNumber> 0.

可以采取哪些措施来解决这个问题?

编辑:我现在尝试这样的代码:

- (void) initSprite {
for(int i = 0; i<spriteNumber; i++) {
if ([spriteType isEqualToString:@"typeOne"]) {
    NSLog(@"repeat");
}}}
Run Code Online (Sandbox Code Playgroud)

它返回错误EXC_BAD_ACCESS

bor*_*den 5

我已经等了很长时间才有理由使用这个关于编程世界中两种类型的平等的愚蠢故事.想象一下,你和你的重要人物一起去野餐.你深深爱着,所以你可以分享一份午餐供你们分享.如果有人要求你指出你的午餐,你们都会指向相同的午餐.你的午餐是==彼此的.现在让我们说你是大食客,所以你打包两个不同的午餐,内容相同.现在当有人要求你指点午餐时,你会指出不同的午餐.你的午餐是!=.但是,如果你看一下里面的午餐里面有什么样的食物,它们仍然有相同的内容.他们是[isEqualTo]彼此.你知道我要去哪儿吗?

午餐是一个对象,你和你的重要人物都是指针.您在使用时测试指针等效(即哪个是午餐)==,但这通常不是您想要的.你想要对象等价(即午餐中的食物).

总之,使用[isEqualTo]而不是==- >if([spriteType isEqualToString:@"typeOne"])