Я близок к завершению разработки приложения для создания музыки и хочу добавить возможность сохранять и загружать проекты / сеансы.Приложение построено на «циклической машине», которая хранит записанные заметки в многомерных массивах, и имеет множество параметров эффектов и других состояний, которые должны быть сохранены вместе с этими массивами.Это будет мой первый опыт работы с хранилищем данных в iOS, поэтому я ищу некоторые рекомендации о том, какая система может быть лучшей.
Я взглянул на CoreData, и кажется, что это займет очень много времени.время, чтобы получить эти данные в удобной форме для управляемых объектов.Realm кажется более простым вариантом, так как вы можете сохранять объекты «как есть», верно?Это подводит меня ко второй части вопроса: я хотел бы отправить некоторые заводские проекты с приложением - есть ли способ извлечь данные, сохраненные с помощью Realm (или другого метода), чтобы я мог отправить их с готовым приложениемдля загрузки пользователем?
Другое соображение - насколько сложно будет интегрировать систему хранения данных в существующий проект XCode.
Вот фрагмент машинного объекта цикла, который дает вамидея о том, почему я думаю, что CoreData будет неэффективным методом (есть несколько других больших классов, подобных этому):
open class LoopMachine {
var delegate: LoopMachineDelegate!
static let defaultTempo = 120
static let numLoopsPerSource = 3
static let minLoopLength = 4
static let maxLoopLength = 32
static let ticksPerBeat = 32
var master: Master!
var sources: Array<LoopSource?>!
var activeSource = 0
var beatsPerMeasure = 4
var currentBeat = 1
var currentTick = 1
var metronome = AKMetronome()
var metronomeOn = true
var storedTempo: Int! // Used to store the current tempo when it is halved for easy rec mode
var isPlaying = false
var isRecording = false
var countIn = true
var countingIn = false
let numSources = 12
var quantization = 2 // How many ticks to quantize recorded notes to, min: 2 max: ticksPerBeat
var quantizeNoteOnOnly = true
var copiedLoop: Loop?
var copiedLoopType: Int?
Это только моя вторая публикация, поэтому извиняюсь, если я что-то пропустил -просто дай мне знать.