先日の「[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する部分はコメントアウトしました。


コメントを残す