2016-01-29 3 views
0

Я надеюсь, что это подходящий форум, чтобы задать такой вопрос. Я пытаюсь свести к минимуму количество данных, выполняющих синхронизацию с iCloud, одновременно обеспечивая идеальную скорость приложения ... Я пытаюсь использовать эффективную модель ... Мое приложение (которое является базовым приложением контрольного списка) будет иметь вокруг 8 переменных, которые могут быть помечены как «принадлежащие» для каждого элемента.Core Data Model design - 8 bools или 1 NSString? Core Data iOS swift

Было бы лучше создать 8 атрибутов в качестве логических атрибутов или одного атрибута String? С атрибутом string я бы просто включил 8 чисел типа «00000000» или «10000000» или «10001000» с каждым символом строки, связанной с конкретным элементом, и был получен путем поиска определенного индекса строки.

Моя первоначальная мысль состоит в том, что 8 булевых элементов позволят ускорить чтение и запись и будут иметь минимальный след, но я был бы признателен за более интеллектуальную обратную связь от экспертов.

+0

Как насчет NS_OPTIONS и просто NSInteger? – ogres

ответ

0

Я бы не рекомендовал ничего подобного для минимизации использования памяти. Причина в том, что bool стоит 1 байт - 8 бит (но нам нужно только один и другой 7 не использовать), строка такая же, но с символами. Если вы хотите минимизировать использование памяти, чем использовать 1 байт. Поскольку 1 байт - 8 бит, вы можете установить каждый бит с 1 или 0 с использованием маски памяти (бит-маска). И чем все ваши значения будут выделены в 1 байт, что будет использовать на восемь раз меньше памяти, чем bool. Как использовать маску памяти (бит маски) вы можете прочитать эту тему

Declaring and checking/comparing (bitmask-)enums in Objective-C

0

Я думаю, что какая-то разница в скорости и памяти, вероятно, будет незначительным. Дизайн и код его наиболее логичным образом, который на первый взгляд, кажется, использует 8 булевых. Например, если вам нужно получить подмножество данных на основе логических значений, будет гораздо проще построить требуемый предикат.