У меня есть четыре части данных, которые я всегда хочу держать вместе: 2 NSArrays и 2 ints. Я думал, что структура может быть хорошей идеей, но я получаю ошибку «ARC не допускает объектов в structs». Каким будет лучший способ инкапсуляции данных? Использование NSDictionary?Структура iOS с NSArrays
1
A
ответ
7
Создайте класс с 4 свойствами. Это позволяет в будущем наращивать, добавляя стандартные методы, такие как isEqual:
и заставляя его работать с NSCoding
и т. Д. Вы также можете добавить конструкторы удобства и другие полезные методы по мере необходимости.
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
1) Если это будет новым, отдельный класс или включены как часть существующей, которая использует его? 2) Мне нужен только один набор данных, поскольку я просто обновляю его соответствующим образом. Можно ли использовать одноэлементный шаблон для этого? – user1802143
Создайте отдельный класс, если он имеет смысл для ваших нужд. Это упрощает повторное использование. Использование singleton должно использоваться только в том случае, если вы на 100% уверены, что все ваше приложение должно иметь доступ только к одному экземпляру этого класса. – rmaddy