在哪里放置更新核心数据功能(swift)
Posted
技术标签:
【中文标题】在哪里放置更新核心数据功能(swift)【英文标题】:Where to place update core data function (swift) 【发布时间】:2018-05-15 05:29:42 【问题描述】:我对如何更新核心数据进行了一些研究,并找到了 setValue() 函数。
我现在正在为在哪里调用这个函数而苦苦挣扎。显然我会在数据更改时调用它:
if (textField.text != detail!.valueForKey("name")!.description
detail?.setValue(textField.text, forKey: "name")
我会把这个放在哪里? 我怀疑它属于 viewDidLoad 和 configureView。 这是我的 detailViewController 文件。
文本字段是:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! TextFieldTableViewCell
let textField: UITextField = cell.textField
let detail = self.detailItem
textField.text = detail!.valueForKey("name")!.description
return cell
已解决
textFieldDidEndEditing() 解决了检查值是否改变并保存的问题。
传递作为 UITableViewCell 子类的 textField 在这里解决:How to call textField that is a inside of UITableViewCell (swift)
【问题讨论】:
值更改为 textFeild 时是否要设置值? 我想在 textField 中的值更改时设置值。 textField 当前持有 valueForKey()。 所以试试 UItextField 的委托方法 func textFieldDidEndEditing(_ textField: UITextField) 不直接相关,但setValue:forKey / valueForKey
在泛型 NSManagedObject
类型的时代已经过时。使用子类和点符号。并且不要忘记保存上下文以应用更改。
通常我认为这会起作用,但是 textField = cell.textField。我已经更新了问题以包含 textField 是什么。
【参考方案1】:
class ViewController: UIViewController,UITextFieldDelegate
@IBOutlet weak var txtName: UITextField!
override func viewDidLoad()
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
txtName.delegate = self
func textFieldDidEndEditing(_ textField: UITextField)
print("Tells the delegate that editing ends for specific textfield")
if (textField.text != detail!.valueForKey("name")!.description
detail?.setValue(textField.text, forKey: "name")
希望这会有所帮助..
【讨论】:
以上是关于在哪里放置更新核心数据功能(swift)的主要内容,如果未能解决你的问题,请参考以下文章