不幸的是,新的核心数据语义让我发疯。我之前的问题有一个干净的代码,但由于头文件的自动生成不正确而无法工作。现在我继续删除对象的工作。
我的代码看起来很简单:
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?)
获取的结果是array就您而言,管理对象的数量[Event]
,因此您可以枚举数组并删除所有匹配的对象。
示例(使用try?
代替try!
以避免案件发生事故
获取错误):
if let result = try? context.fetch(fetchRequest) {
for object in result {
context.delete(object)
}
}
do {
try context.save()
} catch {
//Handle error
}
如果不存在匹配的对象,则获取成功,但结果
数组为空。
Note:在你的代码中,object
有类型[Event]
因此在
context.delete(object)
编译器创建一个调用
public func delete(_ sender: AnyObject?)
的方法NSObject
而不是预期的
public func delete(_ object: NSManagedObject)
的方法NSManagedObjectContext
。这就是你的代码编译的原因
但在运行时失败。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)