我有一个NSObject定义如下:
@interface MFMoodMix : NSObject {
NSNumber *m1;
NSNumber *m2;
NSNumber *m3;
NSNumber *m4;
NSNumber *m5;
NSNumber *m6;
NSNumber *m7;
}
有什么方法可以快速遍历所有这些值以找到最大值?例如就像UIView一样(UIView * x在view.subviews中),是否有类似的方法可以快速完成?
由于
答案 0 :(得分:5)
没有。这是一个糟糕的设计。请改用NSNumbers数组。
@interface MFMoodMix : NSObject {
NSArray *ms;
}
然后在你的init
方法(或其他地方)中将数字添加到数组中:
-(id) init
{
/* ... */
ms = [[NSArray alloc] initWithObjects:
[NSNumber ...],
[NSNumber ...], nil];
/* ... */
}
要进行迭代,只需考虑NSNumber的示例是int(s):
int high = 0; /* or a negative number... */
/* This is not Python */
for (NSNumber *n in ms)
if ([n intValue] > high)
high = [n intValue];
答案 1 :(得分:2)
如果您有一个类似值的集合,您需要以相同的方式访问它,我建议您只需将它们放入... collection
。如果将这些值放入NSArray
,您可以轻松地迭代它们并按照您喜欢的方式对它们进行排序。如果要保留m *前缀,可以替换NSDictionary
并使用 m 值作为键。
答案 2 :(得分:1)
如果你以某种方式无法将你的数字转换为数组,你总是可以通过艰难的方式去做并使用objc运行时:-)
这里有一个很好的主题:Objective C Introspection/Reflection