2013-02-08 2 views
1

Это мой код.диапазон расширяется в многоуровневом массиве

NSString* seats = @"NEWS"; 
NSMutableString *sp = [[NSMutableString alloc] initWithString:@"    "]; 
NSArray *[email protected][@[sp, sp, sp, sp], @[sp, sp, sp, sp]]; 
[dials[0][2] replaceCharactersInRange:NSMakeRange(5, 1) withString:[seats substringWithRange:NSMakeRange(3,1)]]; 
NSLog(@"dial 0 0 : %@",dials[0][0]); 
NSLog(@"dial 0 1 : %@",dials[0][1]); 
NSLog(@"dial 0 2 : %@",dials[0][2]); 
NSLog(@"dial 0 3 : %@",dials[0][3]); 

Это моя консольная индикация.

2013-02-08 08:23:26.114 [29075:11303] dial 0 0 :  S  
2013-02-08 08:23:26.115 [29075:11303] dial 0 1 :  S  
2013-02-08 08:23:26.115 [29075:11303] dial 0 2 :  S  
2013-02-08 08:23:26.115 [29075:11303] dial 0 3 :  S  

Как я могу получить следующее показание, которое я хочу?

2013-02-08 08:23:26.114 [29075:11303] dial 0 0 :    
2013-02-08 08:23:26.115 [29075:11303] dial 0 1 :    
2013-02-08 08:23:26.115 [29075:11303] dial 0 2 :  S  
2013-02-08 08:23:26.115 [29075:11303] dial 0 3 :    

ответ

3

просто делая это:

NSArray *[email protected][@[sp, sp, [sp mutableCopy], sp], @[sp, sp, sp, sp]]; 

Got почему? Если вы считаете, что массив просто содержит повторяющиеся объекты. Каждый указатель указывает на тот же объект, кроме циферблатов [0] [2], который указывает на скопированный объект.

Допускается дублирование объектов в одном массиве, но это может быть концептуально неправильно. Поэтому также рассмотрим возможность копирования всех объектов.

Другим решением было бы заменить неизменный массив с изменяемыми строками с изменяемым массивом с неизменными строками, и в этом случае вы можете также поместить повторяющиеся объекты и изменять объект, вы должны заменить его:

NSString *sp = @"    "; 
NSArray*[email protected][[@[sp, sp, sp, sp]mutableCopy], [@[sp, sp, sp, sp]mutableCopy]]; 
NSString* replace= [dials[0][2] stringByReplacingCharactersInRange:NSMakeRange(5, 1) withString:[seats substringWithRange:NSMakeRange(3,1)]]; 
[dials[0] replaceObjectAtIndex: 2 withObject: replace]; 
+1

Хороший ответ! Однако это * набор *, который не может иметь один и тот же объект несколько раз, и я не вижу проблемы с дублирующимися объектами в * массиве * (кроме того, как OP использовал его в этом случае). – trojanfoe

+0

Да, я согласен, что это может иметь несколько объектов, но я говорю, что это концептуально спорно. –

+0

Потому что я хочу редактировать каждое отдельное пространство, хотя я просто показал одну позицию, чтобы сделать свою мысль, вы имеете в виду, что циферблаты нужно создавать с помощью '[sp mutableCopy]' в каждой позиции? И есть ли какой-то трюк, чтобы сделать это, кроме определения грубой силы, как тот, который я использую? Также, если у вас есть время, я хотел бы определить весь диск в другом классе 'BSParam.h/.m', который будет включен здесь, но не смог этого сделать. Не могли бы вы сказать, как? Как это для добавления вопросов? – zerowords

Смежные вопросы