前回の記事でCoreDataを扱う準備ができました。
【iOSアプリ開発!】- swift2 – 準備編 : CoreDataへのデータの保存、読み込み、更新、削除
次に、早速、CoreDataへのデータの保存、読み込み、更新、削除などを説明していきます。
1,データの保存
(1)appDelegateのインスタンスを生成し、NSMangedObjectContextを取得。
(2)Entity名を指定して、NSEntityDescriptionによりEntityのインスタンスを取得
(3)EntityのAttributeを指定して、データをセット
(4)セットした値を保存
<br /> func writeData(){<br /> let appDelegate: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate<br /> let myContext: NSManagedObjectContext = appDelegate.managedObjectContext</p> <p> let myEntity: NSEntityDescription! = NSEntityDescription.entityForName("Model", inManagedObjectContext: myContext)</p> <p> let newData = Model(entity: myEntity, insertIntoManagedObjectContext: myContext)<br /> newData.someDataA = "amazarashi"<br /> newData.someDataB = 100<br /> appDelegate.saveContext()<br /> }<br />
2、データのロード(読み込み)
(1)appDelegateのインスタンスを生成し、NSMangedObjectContextを取得。
(2)Entity名を指定して、NSFetchRequstを生成
(3)swift2からは、do{ }catch{}構文でNSFetchRequstを実行し、格納データを取得。
(4)for で格納値を取り出す。
<br /> func loadData(){<br /> let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate<br /> let managedContext = appDelegate.managedObjectContext</p> <p> let request = NSFetchRequest(entityName: "Model")<br /> request.returnsObjectsAsFaults = false</p> <p> do {<br /> let results = try managedContext.executeFetchRequest(request) as! [Model]<br /> resultDatas = results<br /> } catch let error as NSError {<br /> print("Could not fetch \(error), \(error.userInfo)")<br /> }<br /> print(resultDatas.count)<br /> for result in resultDatas{<br /> print(result.someDataA)<br /> print(result.someDataB)<br /> }<br /> }<br />
3、データの更新
(1)appDelegateのインスタンスを生成し、NSMangedObjectContextを取得。
(2)Entity名を指定して、NSFetchRequstを生成
(3)NSFetchRequstに更新対象の条件を設定(今回はsomeDataBの値が100のデータ)
(4)do{ }catch{}構文でNSFetchRequstを実行し、格納データを取得。
(5)取得した更新対象データのsomeDataAの値を”arehamahoudarouka”に設定
(6)更新結果を保存する。
<br /> func updateData(){<br /> let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate<br /> let managedContext = appDelegate.managedObjectContext</p> <p> let request = NSFetchRequest(entityName: "Model")<br /> //条件設定<br /> let predicate = NSPredicate(format: "someDataB = %d",100)<br /> //リクエストに条件付加<br /> request.predicate = predicate</p> <p> request.returnsObjectsAsFaults = false</p> <p> do {<br /> let results = try managedContext.executeFetchRequest(request) as! [Model]<br /> resultDatas = results<br /> } catch let error as NSError {<br /> print("Could not fetch \(error), \(error.userInfo)")<br /> }</p> <p> for result in resultDatas{<br /> result.someDataA = "arehamahoudarouka"<br /> }</p> <p> appDelegate.saveContext()</p> <p> }<br />
4、データの削除
(1)appDelegateのインスタンスを生成し、NSMangedObjectContextを取得。
(2)Entity名を指定して、NSFetchRequstを生成
(3)NSFetchRequstに削除対象の条件を設定(今回はsomeDataBの値が100のデータ)
(4)do{ }catch{}構文でNSFetchRequstを実行し、格納データを取得。
(5)取得した削除対象データを削除
(6)削除結果を保存する。
<br /> func deleteData(){<br /> let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate<br /> let managedContext = appDelegate.managedObjectContext</p> <p> let request = NSFetchRequest(entityName: "Model")<br /> //条件設定<br /> let predicate = NSPredicate(format: "someDataB = %d",100)<br /> //リクエストに条件付加<br /> request.predicate = predicate</p> <p> request.returnsObjectsAsFaults = false</p> <p> do {<br /> let results = try managedContext.executeFetchRequest(request) as! [Model]<br /> resultDatas = results<br /> } catch let error as NSError {<br /> print("Could not fetch \(error), \(error.userInfo)")<br /> }</p> <p> for data in resultDatas{<br /> managedContext.deleteObject(data)<br /> }</p> <p> print("deleted")<br /> print(resultDatas.count)</p> <p> appDelegate.saveContext()<br /> }<br />