CoreData数据验证失败仍然插入context的解决(三)
2017-01-10 08:18
330 查看
在前两篇系列博文中,我们讨论了该问题的几种解决办法.随着对CoreData的深入学习,又发现一个更简单的方法.
我们保持原先的创建managedObject方法不变,只是略微修改一下插入的代码就可以了.
首先是托管对象创建的代码:
在ks对象需要实际插入到数据库中时,我们使用如下代码:
你没看错,只需要在验证失败的错误处理代码中检查是否已经有对象被插入,如果有则将其删除即可.
保存编译代码,效果和前面几种完全一致.
我们保持原先的创建managedObject方法不变,只是略微修改一下插入的代码就可以了.
首先是托管对象创建的代码:
if let entity = NSEntityDescription.entity(forEntityName: "KsMain", in: containerVC.managedObjectContext){ if let ks = NSManagedObject(entity: entity, insertInto: containerVC.managedObjectContext) as? KsMain{ //try to fill ks object!!!
在ks对象需要实际插入到数据库中时,我们使用如下代码:
func insert(_ ks:KsMain){ do{ try ks.validateForInsert() }catch{ if ks.isInserted{ managedObjectContext.delete(ks) } print(error.localizedDescription) } }
你没看错,只需要在验证失败的错误处理代码中检查是否已经有对象被插入,如果有则将其删除即可.
保存编译代码,效果和前面几种完全一致.
相关文章推荐
- CoreData数据验证失败仍然插入context的解决(二)
- CoreData数据验证失败仍然插入context的解决(一)
- CoreData数据验证失败仍然插入context的解决(三)
- CoreData数据验证失败仍然插入context的解决(一)
- CoreData数据验证失败仍然插入context的解决(二)
- CoreData数据验证失败仍然插入context的解决(二)
- CoreData数据验证失败仍然插入context的解决(三)
- CoreData数据验证失败仍然插入context的解决(一)
- 跨服务器post数据失败:验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 <machineKey> 配置指定了相同的 validationKey 和验证算法。的解决办法
- 完美解决ListView中事件ItemCreated中使用ClientID导致插入数据失败
- MySql中插入中文数据提示Data too long for column X at row n的解决
- 解决使用Validform插件,datatype里用ajax验证数据是否已经存在时出现的问题
- Hibernate插入数据时报错Data truncation: Data too long for column 'name' at row 1 解决办法
- thinkphp 在数据库更新(save)的时候,如果字段没有被修改,会更新失败 和数据的自动验证,插入的时候可以自动验证,但更新的时候就不能验证了
- mysql max_allowed_packet自动重置为1024 ,数据插入失败问题解决
- flex中,用ArrayCollection作为DataGrid的dataProvider,想在ArrayCollection末尾插入数据的解决方法
- IOS CoreData 多表查询demo解析(二)--插入测试数据
- mvc EF 数据保存时,报错:”对一个或多个实体的验证失败……“之解决
- 解决 mysql [Data Too Long..]数据更新失败的异常
- CoreData实践(三)——插入数据并使用SQLite Professional查看