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