概述保存在核心数据
我需要几个的TextField保存到CoreData的整数,但是只有第一个(见于如下pickerView)保存和正确地打印。其他人不能正确保存,例如,当我尝试保存整数时,我得到一个错误,说他们不能接受一个字符串,这是有道理的。我只是找不到解决整数字符串问题的方法。另一个错误发生在我试图将所有东西都转换为字符串时(主要是因为我不需要对它进行任何算术运算,所以它没有关系),它只是给了我一个saveButton函数的突破点。
我想知道
我最终需要的是所有这些TextField的保存到CoreData,这样我可以取回这些数据的能力是什么。我很感激提前的帮助。谢谢!
注意
我在内的整个(或大部分)的ViewController.swift文件,以便你可以看到我是如何声明的东西,然后它们是如何被调用。有问题的代码位于代码块底部的saveButton动作中。
CODE
@IBOutlet weak var locationOfMachine: UITextField!
@IBOutlet weak var engineHours: UITextField!
@IBOutlet weak var YOM: UITextField!
@IBOutlet weak var serialNo: UITextField!
@IBOutlet weak var modelName: UITextField!
@IBOutlet weak var pickerTextField: UITextField!
var pickOption = ["Wirtgen","Kleeman","Hamm","Vögele"]
override func viewDidLoad() {
super.viewDidLoad()
var pickerView = UIPickerView()
pickerView.delegate = self
pickerTextField.inputView = pickerView
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 1
}
@IBAction func saveButton(sender: AnyObject)
{
var appDel: AppDelegate = (UIApplication.sharedApplication().delegate as! AppDelegate)
var context:NSManagedObjectContext = appDel.managedObjectContext
var entity1 = NSEntityDescription.insertNewObjectForEntityForName("UsedInfo", inManagedObjectContext:context) as NSManagedObject
entity1.setValue(pickerTextField.text, forKey: "product")
entity1.setValue(modelName.text, forKey:"modelName")
entity1.setValue(serialNo.text, forKey:"serialNo")
entity1.setValue(Int(YOM.text!), forKey:"yom")
entity1.setValue(engineHours.text, forKey:"engineHours")
entity1.setValue(locationOfMachine.text, forKey:"location")
print(entity1.valueForKey("product"))
print(entity1.valueForKey("modelName"))
print(entity1.valueForKey("serialNo"))
print(entity1.valueForKey("yom"))
print(entity1.valueForKey("engineHours"))
do {
try context.save()
}
catch {
print("error")
}
}
编辑
在尝试一切保存为只是一个字符串,因为我只需要找回它,我碰到这个问题:
entity1.setValue(pickerTextField.text, forKey: "product")
entity1.setValue(modelName.text, forKey:"modelName")
entity1.setValue(serialNo.text, forKey:"serialNo") <-Thread1:Breakpoint1.1
entity1.setValue(YOM.text, forKey:"yom")
entity1.setValue(engineHours.text, forKey:"engineHours")
entity1.setValue(locationOfMachine.text, forKey:"location")
print(entity1.valueForKey("product"))
print(entity1.valueForKey("modelName"))
print(entity1.valueForKey("serialNo"))
print(entity1.valueForKey("yom"))
print(entity1.valueForKey("engineHours"))
我也在调试器窗口中获得“(lldb)”。
谢谢!同样,这里有很大的noob,但是对象子类究竟是什么? – gavsta707
当您使用核心数据模型时,Xcode的编辑器菜单有一个“Create NSManagedObject Subclass ...”选项。它可以让你创建符合你的设计的特定类,而不是总是处理泛型的'NSManagedObject'类型。 –
谢谢!我会研究这个 – gavsta707