Iphone 数组,大小不是预期值

Iphone 数组,大小不是预期值,iphone,objective-c,ios,xcode,nsarray,Iphone,Objective C,Ios,Xcode,Nsarray,我无法理解代码中发生了什么: for (NSMutableDictionary *dict in jsonResponse) { NSString *days = [dict objectForKey:@"dayOfTheWeek"]; NSArray *arrayDays = [days componentsSeparatedByString:@" "]; NSLog(@"la var %@ size %lu", days, sizeof(arrayDa

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

 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]);

     }
}
然后崩溃,因为位置3不存在

为什么尺寸没有第二次改变?应该是1


提前感谢

您不应该使用sizeof。它将返回指针大小,这是任何指针类型变量(如字符串、字典、数组等)的固定值

你应该计算NSArray的财产

在代码行下面更改

 NSLog(@"la var %@ size %lu", days, sizeof(arrayDays));
这一行:

 NSLog(@"la var %@ size %lu", days, arrayDays.count);
也执行相同的循环语句。

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

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

注意:您还可以使用以下命令循环阵列:

for (NSString* theValue in arrayDays) {
    NSLog(@"el dia %@",theValue);
}
Sizeof()
仅适用于固定大小的数组。请使用
[arrayDays count]

for (NSString* theValue in arrayDays) {
    NSLog(@"el dia %@",theValue);
}