我为核心数据创建了项目,并为其编写了代码,但是它没有将数据保存在sql数据库中。

//  ViewController.swift

import UIKit

class ViewController: UIViewController, UITextFieldDelegate {

@IBOutlet weak var nameTextField: UITextField!
@IBOutlet weak var emailTextField: UITextField!
@IBOutlet weak var mobileTextField: UITextField!
@IBOutlet weak var stateTextField: UITextField!


override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.
}



@IBAction func saveButtonClicked(_ sender: Any) {

    let dict = ["name":nameTextField.text,"email":emailTextField.text,"mobile":mobileTextField.text,"state":stateTextField.text]

    DatabaseHelper.shareInstance.save(object: dict as! [String : String])
}

//MARK: TextField Delagate mthods

func textFieldShouldReturn(_ textField: UITextField) -> Bool {

    textField.resignFirstResponder()

    return true
}

}



//  DatabaseHelper.swift

import Foundation
import UIKit
import CoreData

class DatabaseHelper{

static var shareInstance = DatabaseHelper() //it is required if you want to access following method outside any class

let context = (UIApplication.shared.delegate as? AppDelegate)?.persistentContainer.viewContext

func save(object:[String:String]){

    let student = NSEntityDescription.insertNewObject(forEntityName: "Student", into: context!) as! Student

    student.name = object["name"]
    student.email = object["email"]
    student.mobile = object["mobile"]
    student.state = object["state"]

    do{

        try context?.save()
    }catch{
      print("daata is not save")
    }

}

}



//AppDelegate.swift

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.

        print("Document Directory :",FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).last ?? "Not Found")

        return true
    }


为了创建核心数据项目,我做了所有必要的代码,但是我无法将数据保存到sql数据库中。

谁能告诉/帮助我,我在代码中缺少什么?

我正在使用Xcode 11.0和5

The complete project you can find here

最佳答案

使用以下代码打印(获取)数据。

let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext

        let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Student")

        request.returnsObjectsAsFaults = false
        do {
            let result = try context.fetch(request)
            for data in result as! [NSManagedObject] {
               print(data.value(forKey: "name") as! String)
          }

        } catch {

            print("Failed")
        }

关于ios - 数据未保存在sqlite核心数据库中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58163031/

10-11 14:59
查看更多