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

Pocket

先日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
        
    }

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

コメントを残す

%d人のブロガーが「いいね」をつけました。