サイトアイコン 演劇とかの感想文ブログ

[swift]配列の配列から、realmに保存(swift2.0,realm1.0)

先日の「[swift]csvファイルから読込んだデータを配列にセット(Swift2.0)」の続きです。

CSVファイルの内容を配列の配列([[String]]型)に保管したので、そのデータをrealmのクラスに保存します。

■配列の内容をクラスの要素に設定する関数を実装。

劇評者クラスに、配列で受け取った値を設定する関数(要素設定)を実装します。

 

class 劇評者型:Object{
  dynamic var 劇評者ID:String = ""
  dynamic var 名前:String = ""
  dynamic var URL:String = ""
  dynamic var 更新日 = NSDate()
  
  let 劇評集 = LinkingObjects(fromType: 劇評型.self,property:"劇評者")
  
  override static func primaryKey() -> String?{
    return "劇評者ID"
  }
  func 要素設定(要素配列:[String]){
    self.劇評者ID=要素配列[0]
    self.名前=要素配列[1]
    self.URL=要素配列[2]
    self.更新日=日付変換(要素配列[3])
  }
}

もともと文字列で設定しているので、そのまま設定するばよいのですが、日付はNSDate型でクラスの中では設定しているので、変換が必要になります。

■文字列型の日付をNSDate型に変換する関数。

NSDateFormatterを利用して変換します。とりあえず、日付は”yyyy/MM/dd”型決め打ちなので、カンタンに変換だけする関数を用意しました。

func 日付変換(文字列: String) -> NSDate {
  let formatter :NSDateFormatter = NSDateFormatter()
  
  formatter.dateFormat = "yyyy/MM/dd"
  
  return formatter.dateFromString(文字列)!
}

■上記の関数を組み合わせて、realmに保存

上記のように実装した関数を利用して、前回のCSVファイルを読み込んだ後、それをrealmに保存するために以下のような実装を行いました。

func 劇評者データ作成(realm:Realm){
  //劇評者ID,名前,URL,更新日
  //var 劇評者配列集:[[String]]=[]
  let 劇評者配列集=CSV読込("劇評者")
  
  for 劇評者配列 in 劇評者配列集{
//    for 項目 in 劇評者配列{
//      print (項目)
//    }
    let 劇評者 = 劇評者型()
    劇評者.要素設定(劇評者配列)
    try! realm.write{
      realm.add(劇評者)
    }
  }
}

前回動作確認のため、CSVファイルを取り込んだ結果をprintする部分はコメントアウトしました。

[swift]csvファイルから読込んだデータを配列にセット(Swift2.0)

モバイルバージョンを終了