ios - if 语句不返回任何内容

标签 ios string if-statement cocos2d-iphone

完整类(class)代码在这里: 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");
        }
    }
}

原帖:

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

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

它应该记录“重复”“spriteNumber”次数,只要字符串“spriteType”具有“typeOne”的内容,但没有任何反应。它不记录“重复”,但也没有任何错误。字符串 'sprite type' 的内容肯定是 'typeOne',并且 spriteNumber > 0。

如何解决这个问题?

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

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

它返回一个错误,EXC_BAD_ACCESS

最佳答案

我已经等了很长时间才找到一个理由来使用我想出的关于编程世界中两种平等类型的愚蠢故事。想象一下,您和您的另一半一起去野餐。你深深地爱着你,所以你准备了一份午餐让你们俩一起分享。如果有人要你指着你的午餐,你们都会指着同一份午餐。你们的午餐是 == 的。现在假设您是大胃王,所以您准备了两份内容相同的不同午餐。现在当有人让你指着你的午餐时,你会指着不同的午餐。你的午餐是 !=。但是,如果您在午餐的内部查看里面的食物种类,它们的内容仍然相同。它们是 [isEqualTo] 彼此。你知道我要去哪里吗?

午餐是一个对象,你和你的另一半是指针。当您使用 == 时,您测试指针等效性(即它是哪顿午餐),但这通常不是您想要的。您需要对象等价(即午餐中的食物)。

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

关于ios - if 语句不返回任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10716123/

相关文章:

javascript - ES6 字符串插值和 jQuery $ 的冲突

python - 以两个(或更多)其他变量为条件指定 `str` 的更优雅方式

c++ - 为什么我的结构在包含字符串时崩溃?

java - 尝试在使用 if/else 的同时实现评分系统。 [JAVA]

mysql - mysql中如何写IF语句

iphone - 英语语言的本地化显示名称不起作用

ios - 为什么 insertNewObjectForEntityForName 只返回一个 NSManagedObject?

ios - iAd 引起约束冲突

ios - 使用 UIDocumentInteractionController 时点击 "Open in Instagram"时发生崩溃

r - 使用字符串作为 ipwtm 函数的公式?