Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 在CCSprite数组元素目标C(cocos2d)中搜索_Objective C_Arrays_Cocos2d Iphone - Fatal编程技术网

Objective c 在CCSprite数组元素目标C(cocos2d)中搜索

Objective c 在CCSprite数组元素目标C(cocos2d)中搜索,objective-c,arrays,cocos2d-iphone,Objective C,Arrays,Cocos2d Iphone,我正在使用cocos2d,我想看看数组的元素中是否有特定的字符串。以下是元素,它是一个CCSprite对象: <theSwift = 08A6EA70 | Rect = (0.00,0.00,27.00,75.00) | tag = 2 | atlasIndex = -1> 我正在繁殖“怪物”,其中一种怪物的标签为1,有些怪物的标签为2。是否可以检查最后一个繁殖的怪物是否在上面的元素中得到了标记=2 我不确定我是否理解你的问题,不过我会试一试: 如果上面的行只是一个NSStri

我正在使用cocos2d,我想看看数组的元素中是否有特定的字符串。以下是元素,它是一个CCSprite对象:

<theSwift = 08A6EA70 | Rect = (0.00,0.00,27.00,75.00) | tag = 2 | atlasIndex = -1>


我正在繁殖“怪物”,其中一种怪物的标签为1,有些怪物的标签为2。是否可以检查最后一个繁殖的怪物是否在上面的元素中得到了标记=2

我不确定我是否理解你的问题,不过我会试一试:

如果上面的行只是一个
NSString
,您只需要检查
tag=2
,那么您应该执行以下操作:

NSRange range = [theString rangeOfString:@"tag = 2"];
if (range.location != NSNotFound) {
    // theString contains "tag = 2"
}

如果该对象位于数组中,则可以使用查找具有特定标记的对象:

NSArray *myArray;

NSObject childWithTag = [[myArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"tag == 2"]]] lastObject];
编辑:因为您使用的是cocos2d,所以非常简单:

CCSprite *spriteWithTag = (CCSprite *)[myLayer childWithTag:2];

如果您正在谈论NSArray,请执行以下操作:

您可以在if语句中使用
containsObject

if ([array containsObject:@"tag = 2"]) {
    //contains tag = 2
}
不过最好还是用字典。使用NSMutableDictionary中的
setObject:forKey:
设置其键的值,并检查值do:

[dict objectForKey:@"tag"]

我建议使用NSDictionary方法。

您可以轻松使用此方法

  [layerName getChildByTag:<(NSInteger)>]
[layerName getChildByTag:]

用于获取任何层的子级。

不过只是一个警告,它还会找到
tag=20
tag=21
,等等。如果该行是字符串,最好的方法是将其解析到字典或实际对象中。@cobbal:你完全正确。我会用一个类来表示这些东西,而不是简单的字符串……我不认为他的行实际上是一个
NSString
,但更可能是cocos2d中
CCSprite
子类的调试输出。这是使用cocos2d吗?如果是这样,你可以使用
getChildByTag:
methinks。你说得对Richard iam!谢谢你的回答。我马上去检查一下。那不行,看看他的输出,数组包含了很多
CCSprite
对象,数组不包含
NSString
s。但是,如果您将其更改为使用一个
NSPredicate
(如我的回答),您可以使用“tag==2”。@RichardJ.RossIII他没有说这不是一个NSArray。。。没必要否决投票!?没错,他使用的是NSArray,但NSArray中充满了CCSprite对象,而不是NSStrings……此外,建议将setObject:forKey与NSDictionary一起使用,因为setValue:forKey:is代表KVC,而不是Dictionary。@RichardJ.RossIII他没有提到CCSprite。我的答案非常适用于nsstrings,所以我不认为否决它有什么意义。好吧,现在为什么要否决它呢?这个答案很好,不是吗?你为什么否决我的答案?并不是说你的更好。这个问题还不够,最好不要投赞成票detail@Maxner这是一个低打击,兄弟。我否决了你的答案,因为它是不正确的,而不是因为它是一个糟糕的答案。我的答案没有错,所以你不应该投反对票。此外,你最后一次看到使用NSPredicate是什么时候?我没有代表投票反对,所以不是我做的