我有一个数组,里面有几个对象(所有不同的类)。但是由于某种原因,使用枚举不起作用。
NSString *arrayString;
NSURL *arrayUrl;
NSProcessInfo *arrayPr;
NSDictionary *arrayDictionary;
NSMutableString *arrayMString;
NSMutableArray *objectArray = [NSMutableArray arrayWithObjects:arrayString,arrayUrl,arrayPr,arrayDictionary,arrayMString,nil];
for( NSString *item in objectArray ){
NSLog(@"Class name is: %@", [item className]);
}
我认为这可能与如何将对象添加到数组有关,但我是Objective-c的新手并且不确定。
答案 0 :(得分:1)
你实际上并没有填充数组。
NSString *arrayString;
声明一个类型为NSString的变量arrayString。它没有被初始化(所以它在使用变量时应该崩溃 - 但在某些构建设置下可能为0)。
所以,分配一个变量:
NSString *arrayString = [NSString stringWithFormat:@"sksjdhf %f\n", 3.3];
arrayWithObjects
添加(va list)参数中的对象,直到遇到nil / null / 0.
在使用它们之前,必须正确设置其余的变量/参数。
这应该像你期望的那样工作:
NSString * str = @"a string";
NSMutableArray *objectArray = [NSMutableArray arrayWithObjects:str, nil];
for (NSObject * item in objectArray) {
NSLog(@"Class name is: %@", [item className]);
}
答案 1 :(得分:0)
在for循环中,使用id数据类型。 id数据类型是一种通用数据类型,可用于存储对任何对象的引用。
例如:
for ( id item in objectArray ) {
NSLog(@"Class name is: %@", [item className]);
}
答案 2 :(得分:0)