core-data - UIPickerView 与 Core Data Swift4
问题描述
我正在尝试重用 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
}
}
将数据添加到 Core Data 的代码下方。
@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")
}
}
解决方案
推荐阅读
- nodes - node-gyp 使用节点版本
- java - 如下图数据文件的相对路径是什么?
- javascript - 在javascript中填充二维数组中的缺失值
- javascript - 带有 Javascript 提交的 Html 表单有时不记录信息
- python - 如何根据另一个功能的成功或失败来执行一个功能?
- php - 当验证错误不适用于错误时,也会弹出验证错误
- python-3.x - 如何在 Spacy 中使用神经核函数
- angular - Angular PrimeNG如何通过单击输入字段而不是按钮来获取选项列表?
- typescript - 打字稿对数字类型的每个对象的键应用算术运算
- python - 归一化图像返回 --->OverflowError: cannot convert float infinity to integer