我正在使用这行代码来遍历一个数组
for (int i = 0; i < [[GameP objectForKey:@"groundMap"] length]; i += 5) {
来自 AS3 背景,我认为“长度”会给我一个数组/对象的长度,但我刚刚发现“计数”似乎做同样的事情,我找不到任何关于使用“长度”,但它似乎工作。
谁能告诉我..
- 什么是“长度”以及它如何/为什么在该行中工作?
- 计数和长度有什么区别?
- 哪个更好用?
感谢您的任何建议。
我正在使用这行代码来遍历一个数组
for (int i = 0; i < [[GameP objectForKey:@"groundMap"] length]; i += 5) {
来自 AS3 背景,我认为“长度”会给我一个数组/对象的长度,但我刚刚发现“计数”似乎做同样的事情,我找不到任何关于使用“长度”,但它似乎工作。
谁能告诉我..
感谢您的任何建议。
假设GameP
是一个字典,调用objectForKey:
返回一个类型为 的对象id
。因此,您试图length
在id
. 这将编译得很好,但在运行时假设“groundMap”的对象是一个数组可能是错误的。数组只有count
方法,没有length
方法。
对于每个循环迭代,您还可以从字典中访问一个对象。你真的应该这样写你的代码:
NSArray *groundMap = [GameP objectForKey:@"groundMap"];
NSUInteger count = groundMap.count;
for (int i = 0; i < count ; i += 5) {
}
这更容易阅读,编译器可以进行更好的错误检查。它也更有效率。
首先,您必须知道字典中对象的类别GameP
。如果NSArray
你必须使用count
这里是没有办法使用另一种方法。
你可以在课堂上找到length
方法。NSSString