我已经看到了一些使用 NSArray indexOfObjectPassingTest 的示例,但我无法让它们工作(它们不会返回有效的索引)。所以现在我正在尝试使用内联块。我通过 typedef'ing 一个块,然后将它设置为一个属性,合成它,并在构造函数中初始化它来完成它。然而,这种方式会使整个点静音,因为我可以轻松地创建一个方法并使用它(更少的打字,更少的努力)。
我想要达到的目标是:
Observations *obs = [self.myAppointment.OBSERVATIONS objectAtIndex: ^NSInteger (NSString *keyword){
for (Observations *obs in self.myAppointment.OBSERVATIONS) {
if ([obs.TIME isEqualToString:keyword] == YES) return (NSInteger)[self.myAppointment.OBSERVATIONS indexOfObject:obs];
}
return (NSInteger)-1;
}];
但是 Xcode 根本就没有它。我尝试了不同的变体,但将其声明为内联似乎是一个问题,这很奇怪,因为正如我所说,对它进行类型定义、声明和综合是这样的:
Observations *obs = [self.myAppointment.OBSERVATIONS objectAtIndex:findObs(keyword)];
findObs 又是一个定义的块,它做同样的事情。这是语法问题,还是我错过了其他更重要的东西?