先日android/javaのローカルストレージへの読み書き処理をまとめたので、
次はiphone/swiftの処理をまとめた。
Create/update処理
// class定義 import Foundation import CoreData @objc(testtable) class testtable: NSManagedObject { @NSManaged var id: NSNumber @NSManaged var somenumber: NSNumber } func writeData(Id:NSInteger, somenumber:NSInteger){ // CoreDataへの書き込み処理. let appDel: AppDelegate = UIApplication.shared.delegate as! AppDelegate let myContext: NSManagedObjectContext = appDel.managedObjectContext! let myEntity: NSEntityDescription! = NSEntityDescription.entity(forEntityName: "testtable", in: myContext) let newData = testtable(entity: myEntity, insertInto: myContext) newData.id = NSNumber(value: Id) if somenumber == 0 { print("no") newData.somenumber = 0 } else{ print("plus") newData.somenumber = NSNumber(value: somenumber + 1) } do { try myContext.save() } catch _ { } }
Read処理
func readData( Id:NSInteger ) -> NSArray{ let app: AppDelegate = UIApplication.shared.delegate as! AppDelegate let categoryContext: NSManagedObjectContext = app.managedObjectContext! let request = NSFetchRequest<NSFetchRequestResult>(entityName: "testtable") request.returnsObjectsAsFaults = false request.predicate = NSPredicate(format: "id = %d", Id) let results : Array = try! categoryContext.fetch(request) if (results.count > 0 ) { let obj = results[0] as! NSManagedObject } else{ let completetimes:NSInteger = 0 writeData(Id: Id, somenumber: somenumber) } return results as NSArray }
これでクラウドにデータをもたせるのではなく、ユーザのスマートフォンにデータを保存する方法ができる。