Core data 带核心数据Swift4的UIPickerView

Core data 带核心数据Swift4的UIPickerView,core-data,swift3,uipickerview,Core Data,Swift3,Uipickerview,我正在尝试重新使用swift 7.3中的代码。我觉得我很亲近。 当我在模拟器上尝试代码时,选择器视图为空,但当我尝试使用它时,只显示一个数据 我还尝试修改和其他代码,将数据从核心数据加载到它,但没有成功 有什么想法吗 多谢各位 import CoreData class ViewController: UIViewController, UIPickerViewDelegate, UIImagePickerControllerDelegate { @IBOutle

我正在尝试重新使用swift 7.3中的代码。我觉得我很亲近。 当我在模拟器上尝试代码时,选择器视图为空,但当我尝试使用它时,只显示一个数据

我还尝试修改和其他代码,将数据从核心数据加载到它,但没有成功

有什么想法吗

多谢各位

    import CoreData
    class ViewController: UIViewController, UIPickerViewDelegate, UIImagePickerControllerDelegate {
        @IBOutlet weak var TextField: UITextField!
        @IBOutlet weak var stylePicker: UIPickerView!
        var styleData = [PilotBase]()
        override func viewDidLoad() {
            super.viewDidLoad()
            let appDelegate = UIApplication.shared.delegate as! AppDelegate
            let context = appDelegate.persistentContainer.viewContext
            let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "PilotBase")
            do {
                styleData = try context.fetch(fetchRequest) as! [PilotBase]
            } catch let err as NSError {
               print(err.debugDescription)
            } 
            let request = NSFetchRequest<NSFetchRequestResult>(entityName: "PilotBase")
            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")
            }     
        }
        func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
            return 1
        } 
        func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
            if component == 0 {
                return styleData.count
            } else {
                return 0
            }    
        } 
        func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {  
            if component == 0 {
                return styleData[row].name
            } else {
                return nil
            }
        } 
        func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {     
            print(styleData[row])
            stylePicker.selectRow(row, inComponent: 0, animated: true)
                    TextField.text = styleData[row].name  
        }
}


您在哪里保存到核心数据?当你打印结果时,你得到了你期望的值吗?样式选择器从哪里加载?如果它来自一个Xib文件,我怀疑您需要在提取核心数据后重新加载data()。问题1:我不知道该由谁来回答这个问题,我甚至都不明白。对于我来说,核心数据保存在核心数据中。以前我有一个NSManageObject,但现在它直接指向核心数据。问题2:它是在视图did load中加载的。如何重新加载数据()?请共享写入核心数据的代码。
    @IBAction func Save(_ sender: Any) {
    let appDelegate = UIApplication.shared.delegate as! AppDelegate
    let context = appDelegate.persistentContainer.viewContext

    let entity = NSEntityDescription.entity(forEntityName: "PilotBase", in: context)
    let newUser = NSManagedObject(entity: entity!, insertInto: context)

    newUser.setValue(TextField.text!, forKey: "name")


    do{
        try context.save()
    }catch{
        print("failed saving")
    }
}