Искать в элементе массива CCSprite Objective C (cocos2d) - PullRequest
2 голосов
/ 13 января 2012

Я использую cocos2d и хочу посмотреть, есть ли конкретная строка в элементе массива.Вот элемент, который является объектом CCSprite:

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

Я порождаю "монстров", и один тип монстров получает тег = 1, а некоторые получают тег = 2. Можно ли проверитьпоследний появившийся монстр получил тег = 2 в элементе выше?

Ответы [ 4 ]

2 голосов
/ 13 января 2012

Если этот объект находится в массиве, вы можете использовать NSPredicate , чтобы найти объект с определенным тегом:

NSArray *myArray;

NSObject childWithTag = [[myArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"tag == 2"]]] lastObject];

РЕДАКТИРОВАТЬ: Поскольку вы используете cocos2d, его какпросто как это:

CCSprite *spriteWithTag = (CCSprite *)[myLayer childWithTag:2];
1 голос
/ 13 января 2012

Не уверен, что понимаю ваш вопрос, но я попробую:

Если строка выше - просто NSString, и все, что вам нужно, это проверить tag = 2, то вы должны сделать:

NSRange range = [theString rangeOfString:@"tag = 2"];
if (range.location != NSNotFound) {
    // theString contains "tag = 2"
}
0 голосов
/ 03 апреля 2013

Вы можете легко использовать этот метод

  [layerName getChildByTag:<(NSInteger)>]

для получения дочернего элемента любого слоя.

0 голосов
/ 13 января 2012

Если вы говорите о NSArray, то сделайте следующее:

Вы можете использовать containsObject в операторе if:

if ([array containsObject:@"tag = 2"]) {
    //contains tag = 2
}

Хотя было бы лучше использовать NSDictionary.Используйте setObject:forKey: в NSMutableDictionary, чтобы установить значения для их ключей, и для проверки значения выполните:

[dict objectForKey:@"tag"]

Я бы рекомендовал использовать метод NSDictionary.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...