Я хочу сохранить и извлечь данные из TextField.Мой код выглядит так:
import UIKit
import CoreData
class DetailViewController: UIViewController, UITextViewDelegate {
private var currentTextField: UITextField?
var Detail: [NSManagedObject] = [ ]
@IBOutlet weak var TableViewDetail: UITextView!
@IBOutlet weak var LabelDetail: UILabel!
@IBOutlet weak var TextField: UITextField!
Кнопка сохранения:
@IBAction func SaveButton(_ sender: Any) {
if (TextField.text == "") {
self.save2(TextField.text!)
}
guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {return}
let managedContext = appDelegate.persistentContainer.viewContext
do {
try managedContext.save()
} catch let err as NSError {
print("Cant save arrangement", err)
}
print("TextFieldEditingEnd2")
}
Это необходимо?
@IBAction func Submit(sender: UIButton) {
if let currentTextField = currentTextField {
currentTextField.resignFirstResponder()
}
}
Я думаю, вот сгенерированная ошибка:
func textFieldDidEndEditing(_ textField: UITextField) {
if (TextField.text != "")
{
currentTextField = textField
print("TextFieldEditingEnd2")
if CoreDataHandler.saveDetail(itemDetail: (currentTextField?.text!)!) {
for item in CoreDataHandler.fetchDetail()! {
print("\(String(describing: item.itemDetail))")
}}
}
}
override func viewDidLoad() {
super.viewDidLoad()
TextField.delegate = self as? UITextFieldDelegate
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func viewWillAppear(_ animated: Bool) {
// func viewDidload(_ animated: Bool) {
}
func textFieldShouldReturn(textField: UITextField) -> Bool {
// User finished typing (hit return): hide the keyboard.
textField.resignFirstResponder()
return true
}
Функция сохранения
func save2(_ itemName: String){
guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else { return }
let managedContext = appDelegate.persistentContainer.viewContext
let entity = NSEntityDescription.entity(forEntityName: "ItemDetail", in: managedContext)!
let showItemDetail = NSManagedObject(entity: entity, insertInto: managedContext)
showItemDetail.setValue(itemName, forKey: "itemDetail")
do {
try managedContext.save()
} catch let err as NSError {
print("Failed to save item",err)
}
}
Есть ошибка
[SmallApps.DetailViewController TextFieldIO:]: нераспознанный селектор отправлен в экземпляр 0x7fad6de3dc10 '
*** Первый стек вызовов вызовов: "
Кто-нибудь посоветовал?
РЕДАКТИРОВАНИЕ: Функции сохранения и выборки:
Сохранение:
class func saveDetail(itemDetail: String) -> Bool {
let context = getContext()
let entity = NSEntityDescription.entity(forEntityName: "ItemDetail", in: context)
let manageObject = NSManagedObject(entity: entity!, insertInto: context)
manageObject.setValue(UITextField.self, forKey: "itemDetail")
do {
try context.save()
return true
}catch {
return false
}
}
выборка:
class func fetchDetail() -> [ItemDetail]? {
let context = getContext()
var showItemDetail:[ItemDetail]? = nil
do {
showItemDetail = try context.fetch(ItemDetail.fetchRequest())
return showItemDetail
}catch {
return showItemDetail
}
}