gpt4 book ai didi

ios - AlertController 在保存时不保存 textField 文本,仅编辑

转载 作者:行者123 更新时间:2023-11-29 01:16:46 32 4
gpt4 key购买 nike

我有一个带有 textField 的 alertController。用户将他们的数据输入文本字段并点击“设置”。然后它应该创建该项目并将输入的文本保存为我设置的属性。但是,在创建项目时,textField 传递 nil。直到项目被重新打开并再次保存(提示 alertController 请求 textField 中的数据),它才会被保存。为什么第一次没有保存?

按下保存按钮:

@IBAction func saveButton(sender: AnyObject) {
if (item?.slminqty == nil) {
let alert = UIAlertController(title: "Minimun Qty.", message: "Please set minimun qty. for pantry.", preferredStyle: UIAlertControllerStyle.Alert)

alert.addTextFieldWithConfigurationHandler { (textField: UITextField!) -> Void in
textField.placeholder = "Minimun Qty."
textField.keyboardType = .NumbersAndPunctuation
textField.clearButtonMode = UITextFieldViewMode.WhileEditing
}

alert.addAction(UIAlertAction(title: "Dismiss", style: UIAlertActionStyle.Default, handler: {saveitem}()))
alert.addAction(UIAlertAction(title: "Set", style: UIAlertActionStyle.Default, handler: {(action) -> Void in
let textField = alert.textFields![0].text!
self.item?.slminqty = textField

self.saveitem(self)}))

self.presentViewController(alert, animated: true, completion: nil)

}else{

if item != nil {
edititems()

} else {
createitems()
}
print(item?.slminqty)

dismissVC()
}

}

保存功能:

func saveitem(sender: AnyObject) {

if item != nil {
edititems()

} else {
createitems()
}
print(item?.slminqty)

dismissVC()
}

创建函数:

func createitems() {

let entityDescription = NSEntityDescription.entityForName("List", inManagedObjectContext: moc)

let item = List(entity: entityDescription!, insertIntoManagedObjectContext: moc)

item.slitem = slitem.text
item.sldesc = sldesc.text
item.slqty = slqty.text
item.slprice = slprice.text
item.slist = true
item.slcross = false

if slitem.text == nil{
createitems()

}else{
edititems()
}

do {
try moc.save()
} catch _ {
return
}
}

编辑功能:

func edititems() {
item?.slitem = slitem.text!
item?.sldesc = sldesc.text!
item?.slqty = slqty.text!
item?.slprice = slprice.text!

do {
try moc.save()
} catch {
return
}
}

如果创建和编辑都相同(slcross 和 slist 除外),为什么在创建项目时不保存数据?

最佳答案

编辑请看我的pull reqest ,我对您的代码进行了一些更改。以及一些评论。

我认为这一行的问题:

 self.item?.slminqty = textField

self.item 可能为零。你应该确保第一项不为零。

如果这是零,你可以尝试创建项目。喜欢:

if self.item == nil {
//create item.
self.acreateItems()
// after creating the item just test its value.
print("item was nil so we just created it.\nIts value not is \(self.item)")
}
self.item?.slminqty = textField

关于ios - AlertController 在保存时不保存 textField 文本,仅编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35088546/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com