iPhone:有没有办法循环NSObject的属性?

uni*_*der 2 iphone objective-c nsobject

我有一个NSObject定义如下:

@interface MFMoodMix : NSObject {
    NSNumber *m1;
    NSNumber *m2;
    NSNumber *m3;
    NSNumber *m4;
    NSNumber *m5;
    NSNumber *m6;
    NSNumber *m7;
}
Run Code Online (Sandbox Code Playgroud)

有什么方法可以快速遍历所有这些值以找到最大值?例如像UIView一样(UIView*x在view.subviews中),是否有类似的方法可以快速完成此操作?

谢谢

sid*_*yll 5

不,这是一个糟糕的设计.请改用NSNumbers数组.

@interface MFMoodMix : NSObject {
    NSArray *ms;
}
Run Code Online (Sandbox Code Playgroud)

然后在您的init方法(或其他地方)中将数字添加到数组中:

-(id) init
{
    /* ... */
    ms = [[NSArray alloc] initWithObjects:
             [NSNumber ...],
             [NSNumber ...], nil];
    /* ... */
}
Run Code Online (Sandbox Code Playgroud)

要迭代,只考虑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];
Run Code Online (Sandbox Code Playgroud)

  • -1'这是一个可怕的设计',因为你不必是冲洗.像"不,但是如果你可以用NSNumber的NSNrray代替NSNumbers的集合,那么你可以通过......来解决这个问题",而不是冒犯性的. (2认同)