1

我无法理解我的代码中发生了什么:

 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。

先感谢您

4

3 回答 3

1

你不应该使用 sizeof。它会返回指针大小,它适用于任何指针类型变量,如字符串、字典、数组等。

您应该计算 NSArray 的属性。

更改以下代码行,

 NSLog(@"la var %@ size %lu", days, sizeof(arrayDays));

用这条线:

 NSLog(@"la var %@ size %lu", days, arrayDays.count);

在循环语句中也做同样的事情。

于 2012-07-02T08:14:41.117 回答
1

sizeof(theArray)计算数据类型的大小,请参阅Wikipedia
[theArray count]theArray.Count返回数组中对象的计数。

替换出现的两个sizeof(arrayDays)by arrayDays.Count

注意:您还可以使用以下方法循环数组:

for (NSString* theValue in arrayDays) {
    NSLog(@"el dia %@",theValue);
}
于 2012-07-02T08:14:57.197 回答
1

Sizeof()仅适用于固定大小的数组。使用 [arrayDays count]

于 2012-07-02T08:26:19.360 回答