我无法理解我的代码中发生了什么:
for (NSMutableDictionary *dict in jsonResponse) {
NSString *days = [dict objectForKey:@"dayOfTheWeek"];
NSArray *arrayDays = [days componentsSeparatedByString:@" "];
NSLog(@"la var %@ size %lu", days, sizeof(arrayDays));
for(int i = 0; i<sizeof(arrayDays); i++){
NSLog(@"el dia %@",[arrayDays objectAtIndex:i]);
}
}
我在日志中得到了什么:
2012-07-02 10:06:57.191 usualBike[1342:f803] var M T W T F size 4
2012-07-02 10:06:57.191 usualBike[1342:f803] day M
2012-07-02 10:06:57.192 usualBike[1342:f803] day T
2012-07-02 10:06:57.192 usualBike[1342:f803] day W
2012-07-02 10:06:57.193 usualBike[1342:f803] day T
2012-07-02 10:06:57.193 usualBike[1342:f803] var S S size 4
2012-07-02 10:06:57.194 usualBike[1342:f803] day S
2012-07-02 10:06:57.194 usualBike[1342:f803] day S
崩溃,因为位置3不存在。
为什么尺寸不会第二次改变?它应该是1。
提前谢谢
答案 0 :(得分:1)
你不应该使用sizeof。它将返回指针大小,该指针大小可修复任何指针类型变量,如字符串,字典,数组等。
你应该算上NSArray的财产。
更改以下代码行,
NSLog(@"la var %@ size %lu", days, sizeof(arrayDays));
这一行:
NSLog(@"la var %@ size %lu", days, arrayDays.count);
也在循环语句中执行相同的操作。
答案 1 :(得分:1)
sizeof(theArray)
计算数据类型的大小,请参阅Wikipedia
[theArray count]
和theArray.Count
返回数组中对象的数量。
将sizeof(arrayDays)
的出现次数替换为arrayDays.Count
。
注意:您还可以使用以下方法循环数组:
for (NSString* theValue in arrayDays) {
NSLog(@"el dia %@",theValue);
}
答案 2 :(得分:1)
Sizeof()
仅适用于固定大小的数组.use [arrayDays count]