2016-02-12 3 views
2

Я написал приложение iOS, которое взаимодействует с устройствами BLE - устройство BLE отправляет данные устройства iOS, а приложение анализирует данные и затем сохраняет их. Приложение iOS получает данные каждую секунду, поэтому массив, в котором я сохраняю свои показания (как NSString), становится очень быстрым.Лучший способ сохранить большой массив на iOS

Приложение разрешено работать в фоновом режиме, и до этого момента я использовал NSUserDefaults для сохранения этого большого массива. Я сделал след в своем приложении и увидел, что он использует 3% процессора iPhone 6 в фоновом режиме и выяснил, что NSUserDefaults вызывал это. Я прочитал об этом и увидел, что для этой цели неэффективен NSUserDefaults.

Теперь я хотел бы перейти от этого метода и использовать что-то другое. Я прочитал несколько таких методов, как сохранение данных в CoreData, в Plists или просто в текстовом файле. Насколько эффективны и легко внедряются такие методы? Я делал что-то с текстовым файлом раньше, что было очень просто, но довольно часто мне нужно взять все содержимое этого текстового файла и загрузить его в массив для синтаксического анализа, который, похоже, будет проблематичным для памяти. Итак, если у вас есть предложения, я бы с удовольствием их услышал.

ответ

2

Глядя на Apple Performance Tips, я нашел что-то к вашей проблеме.

Вкратце: Получите значительный объем данных перед записью на диск, чтобы свести к минимуму доступ к флэш-накопителю с использованием Core Data или SQLite.

Вы можете проверить, как реализовать SQLite настойчивость в this link


улучшить управление File - Советы по производительности

минимизировать количество данных, запись на диск. Операции с файлами - относительно медленные и включают запись на флеш-накопитель, который имеет ограниченный срок службы . Некоторые конкретные советы, которые помогут вам свести к минимуму файлов связанных операции включают в себя:

  • Если данные состоят из структурированного контента, который случайным образом получить доступ, хранить его в постоянном хранилище ядра данных или базы данных SQLite , особенно если сумма данных, которыми вы управляете, может вырасти до нескольких мегабайт.
+0

Я проверю это, спасибо. –

+0

Спасибо, это работает очень хорошо. В фоновом режиме загрузка процессора составляет менее 1%. CoreBluetooth теперь использует большую мощность процессора –