我有一个保存数据的类。每次提取数据时,我都会调用它的方法,并且一次只提取一个数据。所以我需要一个循环来提取。像这样:
while (dataNumber == 0) {
id res = [testClass numericFromColumnBy_Cid:columnID];
}
但我希望它支持Objective-C的";在";循环,就像NSArray一样。
for (NSString *str in NSArray) {};
我该如何设置?
这是通过NSFastEnumeration完成的。
快速枚举示例,第1部分:
@interface Orchestra : NSObject <NSFastEnumeration>
- (void) addMusician: (Musician *) musician;
@end // Orchestra
并添加所需的方法,该方法只需转身并将参数传递给数组:
- (NSUInteger) countByEnumeratingWithState: (NSFastEnumerationState *) enumerationState
objects: (id __unsafe_unretained []) buffer
count: (NSUInteger) len {
return [_members countByEnumeratingWithState: enumerationState
objects: buffer
count: len];
} // countByEnumeratingWithState
对于好奇的人来说,Mike Ash有一篇精彩的博客文章,他深入研究了NSFastEnumeration的内部结构,提供了NSFast枚举的几个参考实现。