得到警告说:
集合表达式类型“NSString *”可能不会响应“countByEnumeratingWithState:objects:count”
尝试运行以下代码时:
NSString *proper = [NSString stringWithContentsOfFile:@"usr/share/dict/propernames" encoding:NSUTF8StringEncoding error:NULL];
for (NSString *i in proper){
NSLog(@"Item>%@", i);
}
当我运行程序时,我没有从NSLog语句获得任何输出。有人碰到这个吗?
最佳答案
编译器警告试图告诉您您不能使用NSString
循环遍历for ... in ...
。除了原因之外,还试图说NSString
不是有效的“集合”类型。有效的“集合”类型是NSArray
,NSSet
和NSDictionary
。
因此,如果您的文件应包含结构化数据,则应将其解析为比纯NSString
更有用的内容。这样的事情可能会带来更好的结果:
NSString* temp = [NSString stringWithContentsOfFile:@"usr/share/dict/propernames" encoding:NSUTF8StringEncoding error:NULL];
NSArray* proper = [temp componentsSeparatedByString:@"\n"];
for (NSString* i in proper){
NSLog(@"Item>%@", i);
}
这将打印文件中的每一行。当然,这假设您的输入文件每行只有一个条目。如果以其他方式构建它,则必须以不同的方式解析它。
关于ios - 快速枚举错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9286227/