Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iPhone:有没有一种方法可以循环浏览NSObject的属性?_Iphone_Objective C_Nsobject - Fatal编程技术网

iPhone:有没有一种方法可以循环浏览NSObject的属性?

iPhone:有没有一种方法可以循环浏览NSObject的属性?,iphone,objective-c,nsobject,Iphone,Objective C,Nsobject,我有一个NSObject,定义如下: @interface MFMoodMix : NSObject { NSNumber *m1; NSNumber *m2; NSNumber *m3; NSNumber *m4; NSNumber *m5; NSNumber *m6; NSNumber *m7; } 有没有什么方法可以快速遍历所有这些值以找到最大的值?e、 g.像UIView as(UIView*x in view.subview)一

我有一个NSObject,定义如下:

@interface MFMoodMix : NSObject {
    NSNumber *m1;
    NSNumber *m2;
    NSNumber *m3;
    NSNumber *m4;
    NSNumber *m5;
    NSNumber *m6;
    NSNumber *m7;
}
有没有什么方法可以快速遍历所有这些值以找到最大的值?e、 g.像UIView as(UIView*x in view.subview)一样,有没有类似的方法可以快速实现这一点


谢谢

不。这是一个糟糕的设计。改为使用NSN数字数组

@interface MFMoodMix : NSObject {
    NSArray *ms;
}
然后在
init
方法中(或其他地方)将数字添加到数组中:

-(id) init
{
    /* ... */
    ms = [[NSArray alloc] initWithObjects:
             [NSNumber ...],
             [NSNumber ...], nil];
    /* ... */
}
为了迭代,仅举一个考虑NSNumber为int的示例:


如果您有一个类似的值集合,您需要以相同的方式访问这些值,我建议您只需将它们放入<代码>收藏。如果将这些值放入
NSArray
,就可以轻松地对它们进行迭代,并根据需要对它们进行排序。如果您想保留m*前缀,可以用
NSDictionary
替换,并使用m值作为键。

如果您无法将数字转换为数组,您可以使用objc运行时:-)


这里有一条很好的线索,所以:

啊,很好+我总是对这些事情感兴趣。+1对于
/*这不是Python*/
。我给另外一个+1表示“这是一个糟糕的设计”,因为它是。-1表示“这是一个糟糕的设计”,因为你不必是一个灌木丛。类似于“不,但是如果你可以用一个NSNumbers数组来代替NSNumbers集合,你可以通过……来循环使用它”这样的话,就可以在没有冒犯的情况下理解这一点。
int high = 0; /* or a negative number... */
/* This is not Python */
for (NSNumber *n in ms)
    if ([n intValue] > high)
        high = [n intValue];