swift4

2017-12-06 9 views
0

pleseはこの私の答えであるswift4

ステップ1の詳細を保存し、迅速な4

+0

質問がありますか? – Paulw11

+0

try https://www.raywenderlich.com/173972/getting-started-with-core-data-tutorial-2 –

+1

Stackoverflowはコード作成サービスではありません。 [Core Data Programming Guide](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreData/CreatingObjects.html)をお読みください。 – vadian

答えて

0

に保存された詳細を取得するデータベースのためのいくつかのサンプルコードスニペットを共有:

下記参照Coredataスタッククラスの作成を

VARのcoreDataStack:CoreDataStack = CoreDataStack()// appDelegate

class Stack 
    { 
    lazy var managedObjectModel: NSManagedObjectModel = { 
    let modelUrl = Bundle.main.url(forResource: "Model", withExtension: "momd")! 
    return NSManagedObjectModel(contentsOf: modelUrl)! 
}() 


lazy var peristentStoreCoordinator: NSPersistentStoreCoordinator = { 
    let coordinator: NSPersistentStoreCoordinator = NSPersistentStoreCoordinator(managedObjectModel: self.managedObjectModel) 
    let applicationDocumentsDirectory: URL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).last! 
    let persistentStoreUrl: URL = applicationDocumentsDirectory.appendingPathComponent("Model.sqlite") 

    do { 
     try coordinator.addPersistentStore(ofType: NSSQLiteStoreType, configurationName: nil, at: persistentStoreUrl, options: nil) 
    } 
    catch { 
     fatalError("Persistent store error! \(error)") 
    } 

    return coordinator 
}() 


lazy var managedObjectContext: NSManagedObjectContext = { 
    let managedObjectContext: NSManagedObjectContext = NSManagedObjectContext(concurrencyType: .mainQueueConcurrencyType) 
    managedObjectContext.persistentStoreCoordinator = self.peristentStoreCoordinator 

    return managedObjectContext 
}() 


func saveContext() { 
    if self.managedObjectContext.hasChanges { 
     do { 
      try self.managedObjectContext.save() 
     } 
     catch { 
      fatalError("There was an error saving the managed object context \(error)") 
     } 
    } 
} 

}

に行を追加

ステップ2:作成エンティティ ステップ3:ManagedObjectModelSubclass作成 - エディタ - > ManagedObjectModelSubclass ステップ4:クラスの輸入コアデータとコードの下に追加

var person = [Person]() //[Person] here denote subclassclass name 
    var appDelegate = UIApplication.shared.delegate as! AppDelegate 

    let personEntity: NSEntityDescription? = NSEntityDescription.entity(forEntityName: "EntityName", in: self.appDelegate.coreDataStack.managedObjectContext) 

    if personEntity != nil { 

     let person1: Person = Person(entity: personEntity!, insertInto: self.appDelegate.coreDataStack.managedObjectContext) 
     person1.name = "name" 
     person1.country = "US" 
     person1.age = "26" 
     person1.place = "NewYork" 
    } 

ステップ5:データの使用をフェッチするためコード

var persons: [Person] = [] // subclass name 

    var appDelegate: AppDelegate = UIApplication.shared.delegate as! AppDelegate 

var listdata = [ModelClass]() // create a modelclass object 

    func fetchDemoData() { 
    let fetchRequest: NSFetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "EntityName") 
    do { 
     if let results = try self.appDelegate.coreDataStack.managedObjectContext.fetch(fetchRequest) as? [NSManagedObject] { 
      let personList: [Person]? = results as? [Person] 
      if personList != nil { 
       self.persons = personList! 


       for eachData in persons { 

        let name = eachData.name as String! 
        let username = eachData.age as String! 
        let email = eachData.country as String! 
        let address = eachData.place as! [String : Any] 

        self.listdata.append(ModelClass(name: name!, username: username!,email : email!,address : address)) 
       } 

       //self.tableview.reloadData() 

      } 


     } 
    } 
    catch { 
     fatalError("There was an error fetching the items") 
    } 
} 
+0

コードがクラッシュし、多くの感嘆符や疑問符を使用しています。フェッチを '[NSManagedObject]'にキャストするのはなぜですか?なぜなら、それが(オプションではない) '[Person]' – vadian

関連する問題