-1

私は 2 つの配列を持っています。最初の配列は数値であり、2 番目の配列はこの数値をインデックスとして使用します。

NSArray *dayOfWeek = [NSArray arrayWithObjects:@"D",@"L",@"M", @"X",@"J",@"V",@"S", nil];

NSArray *arrayDays = [days componentsSeparatedByString:@" "];     

 //arrayDays  2 3 4 5 6 

     NSString *daysPrint;

     for (NSString *theDay in arrayDays) {
         NSLog(@"string %@",theDay);
         NSInteger dayIndex = (NSInteger)theDay;
         NSLog(@"integer %d", dayIndex);
         daysPrint = [NSString stringWithFormat:@"%@ %@", daysPrint, [dayOfWeek objectAtIndex:dayIndex]];

     }

ログで:

2012-07-02 12:49:27.322 usualBike[1698:f803] string 2
2012-07-02 12:49:27.323 usualBike[1698:f803] integer 109471840

そして明らかに dayOfWeek[109461840] を取得しようとするとクラッシュします。

どうすればこれを解決できますか?

前もって感謝します

4

5 に答える 5

10

daysPrint が null になります。空白の値を割り当てる必要があります。これがクラッシュの原因です

NSArray *dayOfWeek = [NSArray arrayWithObjects:@"D",@"L",@"M", @"X",@"J",@"V",@"S", nil];

NSArray *arrayDays = [days componentsSeparatedByString:@" "];     

//arrayDays  2 3 4 5 6 

NSString *daysPrint=@"";

for (NSString *theDay in arrayDays) {
    NSLog(@"string %@",theDay);
    NSInteger dayIndex = [theDay intValue];
    NSLog(@"integer %d", dayIndex);
    daysPrint = [NSString stringWithFormat:@"%@ %@", daysPrint, [dayOfWeek objectAtIndex:dayIndex]];

}
于 2012-07-02T10:57:44.380 に答える
4

これを使って

 for (NSString *theDay in arrayDays) {
    NSLog(@"string %@",theDay);
    NSInteger dayIndex = [theDay intValue];     // change this code
    NSLog(@"integer %d", dayIndex);
    daysPrint = [NSString stringWithFormat:@"%@ %@", daysPrint, [dayOfWeek objectAtIndex:dayIndex]];

}
于 2012-07-02T10:58:04.093 に答える
3

整数変換には、[theDayintValue]のようなNSStringインスタンスメソッドを使用できます。自分をキャストする必要はありません。

お役に立てれば。

于 2012-07-02T10:55:00.560 に答える
3
for (NSString *theDay in arrayDays) {
     NSLog(@"string %@",theDay);
     int dayIndex = [theDay intValue];
     NSLog(@"integer %d", dayIndex);
     daysPrint = [NSString stringWithFormat:@"%@ %@", daysPrint, [dayOfWeek objectAtIndex:dayIndex]];

 }

これはあなたを助けるかもしれません...

于 2012-07-02T10:54:31.287 に答える
2

使用する

NSInteger dayIndex = [theDay intValue]; 

代わりは

于 2012-07-02T10:58:03.263 に答える