在哪里放置更新核心数据功能(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)的主要内容,如果未能解决你的问题,请参考以下文章

在哪里放置 persistentStoreDescriptions ?在 Swift3 Coredata 样板堆栈

在哪里放置加载和保存功能

等待位置数据时从服务器获取数据的功能放置在哪里

DDD:在哪里放置域服务的实现

在哪里放置与 Eloquent 无关的 SQL 查询

在哪里放置应用程序中通用的 VueJS 组件