Swift/Iphoneのローカルストレージに対するcreate/update/read処理をまとめる。

先日android/javaのローカルストレージへの読み書き処理をまとめたので、
次はiphone/swiftの処理をまとめた。

Create/update処理

[swift]
// 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 _ {
}
}
[/swift]

Read処理

[swift]
func readData( Id:NSInteger ) -> NSArray{
let app: AppDelegate = UIApplication.shared.delegate as! AppDelegate
let categoryContext: NSManagedObjectContext = app.managedObjectContext!
let request = NSFetchRequest(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

}
[/swift]

これでクラウドにデータをもたせるのではなく、ユーザのスマートフォンにデータを保存する方法ができる。


Posted

in

,

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *