使用 Swift 在领域数据库中获取 csv 文件

Get csv file in realm database with Swift

我有一个 csv 文件,看起来像这样

Tag1,Tag2,Tag3,
some1,some2,some3,
some4,some5,some6,

有没有办法以编程方式将此文件导入领域数据库?

就像每次应用程序启动一样,新的 csv 文件应该导入领域数据库。

Tag1,Tag2,Tag3, 应该是列 headers,some... 应该是值

目前没有开箱即用的解决方案以编程方式将 csv 文件的内容导入现有的 realm 文件。

您可以使用 Realm Studio 从 csv 文件创建新的领域文件。 Realm Cocoa Converter 也可用于从一个或多个 csv 文件生成新的领域文件,但是,要能够将文件导入到现有的领域文件中,您需要修改转换器。请记住,Realm Cocoa Converter 仅支持 macOS,不能在 iOS 项目中使用。

或者您可以编写自己的代码,将 csv 文件转换为 Realm Object 文件。解析 CSV 文件非常简单,验证它以确保它可以转换为 Realm 对象有点复杂。但是,从 JSON/plist 开始,您可以使用 Codable.

自动解析 Realm 对象

我的 macOS 应用程序将 tsv 文件的内容导入现有领域文件。这是我读取文件的功能。

func readFileFrom(_ fileURL: URL) -> [[String]]? {
  do {
    let content = try String(contentsOf: fileURL, encoding: .utf8)
    let data: [[String]] = content.components(separatedBy: "\r\n").map { [=10=].components(separatedBy: "\t") }
    return data
  } catch {
    //
  }
  return nil
}

然后我将返回的数据传递给生成和添加新对象的领域管理器 class。

guard let data = readFileFrom(url) else { return }
RealmManager.write(data: data)

对于 csv 个文件,您可以将 components(separatedBy: "\t") 更改为 components(separatedBy: ",")