
我的代码似乎很简单:
func deleteProfile(withID: Int) { let fetchRequest: NSFetchRequest<Profile> = Profile.fetchRequest() fetchRequest.predicate = Predicate.init(format: "profileID==\(withID)") let object = try! context.fetch(fetchRequest) context.delete(object)} 我用print(object)而不是context.delete(object)做了一个“硬”调试,它显示了我正确的对象.
所以我只需要删除它.
附:没有deleteObject.现在NSManagedContext只有public func delete(_ sender:AnyObject?)
解决方法 在您的情况下,获取的结果是一系列受管对象[Event],所以你可以枚举数组并删除所有匹配的对象.
示例(使用try?而不是try!来避免在这种情况下崩溃
的提取错误):
if let result = try? context.fetch(fetchRequest) { for object in result { context.delete(object) }} 如果没有匹配的对象存在,则获取成功,但结果
数组为空.
注意:在代码中,对象的类型为[Event],因此在
context.delete(object)
编译器创建一个调用
public func delete(_ sender: AnyObject?)
NSObject的方法而不是预期的
public func delete(_ object: NSManagedobject)
NSManagedobjectContext的方法.这就是为什么你的代码编译但在运行时失败.
总结以上是内存溢出为你收集整理的ios – Swift 3核心数据删除对象全部内容,希望文章能够帮你解决ios – Swift 3核心数据删除对象所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)