У меня есть NSMutableArray Paths, который содержит много объектов Path.Как узнать, содержит ли NSMutableArray объект?
Я бы знал, если определенный путь находится в Пути.
Я попытался с:
if([paths containsObject:aPath]) {
return YES;
}
, но он не работает.
Итак, я попытался также с Предикатами:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF contains %@", path];
NSArray *filteredArray = [self.paths filteredArrayUsingPredicate:predicate];
Но у меня есть ошибка, консольный сказать мне, что Дорожки не коллекция.
EDIT:
Мой массив трактов:
2013-04-04 20:57:36.465 numbs[42781:617] paths (
"PATH: (\n 2,\n 2,\n 2,\n 5,\n 5,\n 6,\n 5,\n 4\n)",
"PATH: (\n 2,\n 2,\n 2,\n 5,\n 5,\n 6,\n 4,\n 5\n)",
"PATH: (\n 2,\n 2,\n 2,\n 5,\n 5,\n 4,\n 5,\n 6\n)",
"PATH: (\n 2,\n 2,\n 2,\n 5,\n 5,\n 4,\n 6,\n 5\n)"
)
Путь является:
PATH: (
2,
2,
2,
5,
5,
5,
6,
5,
4
)
EDIT 2:
добавить в Path.m
- (BOOL)isEqual:(id)other
{
return ([other isKindOfClass:[Path class]] &&
[[other arrayOfNode] isEqual:self.arrayOfNode] &&
[other somme] == self.somme &&
[[other result] isEqual:self.result] &&
[[other resultString] isEqual:self.resultString] &&
[[other wayArray] isEqual:self.wayArray]);
}
- (NSUInteger) hash;
{
return somme^[resultString hash]^[wayArray hash]^[arrayOfNode hash]^[result hash];
}
и в моем контроллере:
if([paths containsObject:aPath]) {
return YES;
}
Но этот метод не работает тоже.
попытаться определить предикат с блоками. это может помочь. – holex
Что такое объект Path? это NSIndexPath? ваша оригинальная идея выглядит правильно для меня, в зависимости от того, как aPath реализует isEqual: – danh