2013-08-26 4 views
1

У меня есть четыре части данных, которые я всегда хочу держать вместе: 2 NSArrays и 2 ints. Я думал, что структура может быть хорошей идеей, но я получаю ошибку «ARC не допускает объектов в structs». Каким будет лучший способ инкапсуляции данных? Использование NSDictionary?Структура iOS с NSArrays

ответ

7

Создайте класс с 4 свойствами. Это позволяет в будущем наращивать, добавляя стандартные методы, такие как isEqual: и заставляя его работать с NSCoding и т. Д. Вы также можете добавить конструкторы удобства и другие полезные методы по мере необходимости.

+0

1) Если это будет новым, отдельный класс или включены как часть существующей, которая использует его? 2) Мне нужен только один набор данных, поскольку я просто обновляю его соответствующим образом. Можно ли использовать одноэлементный шаблон для этого? – user1802143

+0

Создайте отдельный класс, если он имеет смысл для ваших нужд. Это упрощает повторное использование. Использование singleton должно использоваться только в том случае, если вы на 100% уверены, что все ваше приложение должно иметь доступ только к одному экземпляру этого класса. – rmaddy

1

Вы можете сделать это следующим образом:

NSArray *arr1 = [[NSArray alloc] initWithObjects:@"apple",@"orange", nil]; 
NSArray *arr2 = [[NSArray alloc] initWithObjects:@"pine",@"pinnacle", nil]; 
NSInteger val1 = 1; 
NSInteger val2 = 2; 

NSMutableDictionary *dictTest = [[NSMutableDictionary alloc] init]; 
[dictTest setObject:arr1 forKey:@"arr1"]; 
[dictTest setObject:arr2 forKey:@"arr2"]; 
[dictTest setObject:[NSNumber numberWithInteger:val1] forKey:@"val1"]; 
[dictTest setObject:[NSNumber numberWithInteger:val2] forKey:@"val2"]; 
+2

Используйте современные Цель-C. 'NSArray1 * arr1 = @ [@" apple ", @" orange "];'. Затем 'NSDictionary * dict = @ {@" arr1 ": arr1, @" arr2 ": arr2, @" val1 ": @ (val1), @" val2 ": @ (val2)};'. – rmaddy