【发布时间】:2013-04-04 16:01:21
【问题描述】:
我有一个 NSMutableArray Paths,其中包含许多 Path 对象。
我会知道特定路径是否在 Paths 中。
我试过了:
if([paths containsObject:aPath]) {
return YES;
}
但它不起作用。
所以,我也尝试了谓词:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF contains %@", path];
NSArray *filteredArray = [self.paths filteredArrayUsingPredicate:predicate];
但是我有一个错误,控制台告诉我 Paths 不是一个集合。
编辑:
我的路径数组是:
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
)
编辑 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;
}
但是这个方法也行不通。
【问题讨论】:
-
尝试用块定义谓词。它会有所帮助。
-
什么是 Path 对象?它是 NSIndexPath 吗?你最初的想法对我来说是正确的,这取决于 aPath 如何实现 isEqual:
标签: iphone nsmutablearray nspredicate