完整类(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/