存储复杂 Swift 对象的最佳方式,允许它们被提取并随应用程序一起发送
Best way to store complex Swift objects that allows them to be extracted & shipped with app
我的音乐制作应用程序开发接近尾声,我想添加保存和加载的功能 projects/sessions。该应用程序是围绕 'loop machine' 构建的,它在多维数组中存储记录的音符,并且它有许多效果参数和其他必须与这些数组一起保存的状态。这将是我第一次在 iOS 中使用数据存储,所以我正在寻找一些关于哪种系统可能是最好的指导。
我查看了 CoreData,似乎需要很长时间才能将这些数据转化为适合托管对象的形式。 Realm 似乎是一个更简单的选择,因为您可以保存对象 'as is',对吧?这让我进入了问题的第二部分:我想用应用程序发布一些工厂项目——有没有办法提取使用 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?
这只是我第二次发帖,如有遗漏,请见谅 - 请告诉我。
不清楚您将拥有多少数据,但总的来说,您似乎应该查看文档类型持久性,而不是 database/Core 数据。每个项目有 1 个文件。
Matt 的 Codable 建议是开始寻找的好地方。
将您的工厂项目保存为单独的文件,并将它们作为资源捆绑在应用程序中。
我的音乐制作应用程序开发接近尾声,我想添加保存和加载的功能 projects/sessions。该应用程序是围绕 'loop machine' 构建的,它在多维数组中存储记录的音符,并且它有许多效果参数和其他必须与这些数组一起保存的状态。这将是我第一次在 iOS 中使用数据存储,所以我正在寻找一些关于哪种系统可能是最好的指导。
我查看了 CoreData,似乎需要很长时间才能将这些数据转化为适合托管对象的形式。 Realm 似乎是一个更简单的选择,因为您可以保存对象 'as is',对吧?这让我进入了问题的第二部分:我想用应用程序发布一些工厂项目——有没有办法提取使用 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?
这只是我第二次发帖,如有遗漏,请见谅 - 请告诉我。
不清楚您将拥有多少数据,但总的来说,您似乎应该查看文档类型持久性,而不是 database/Core 数据。每个项目有 1 个文件。
Matt 的 Codable 建议是开始寻找的好地方。
将您的工厂项目保存为单独的文件,并将它们作为资源捆绑在应用程序中。