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

时间:2019-04-03 13:33:38

标签: ios swift database csv realm

我有一个看起来像这样的CSV文件

Tag1,Tag2,Tag3,
some1,some2,some3,

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

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

Tag1,Tag2,Tag3应该是列标题,而some ...应该是值

2 个答案:

答案 0 :(得分:1)

目前尚不存在以编程方式将if [ -z "$(find /usr/share/man/man1/* -not -name '*.gz' -print -quit)" ] then echo only gz fi 文件内容导入到现有csv文件中的现成解决方案。

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

或者您可以编写自己的代码,将realm文件转换为csv Realm个文件。解析CSV文件非常容易,对其进行验证以确保可以将其转换为Realm对象要复杂一些。但是,您可以从JSON / plist使用Object自动解析Realm对象。

答案 1 :(得分:1)

我的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 { $0.components(separatedBy: "\t") }
    return data
  } catch {
    //
  }
  return nil
}

然后我将返回的数据传递给我的Realm Manager类,该类生成并添加新对象。

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

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