当前位置: 首页 > 面试题库 >

Swift 3核心数据删除对象

敖涵容
2023-03-14
问题内容

不幸的是,新的Core
Data语义使我发疯。我之前的问题有一个干净的代码,因为头文件的自动生成不正确,因此无法正常工作。现在,我继续删除对象的工作。我的代码似乎很简单:

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)它向我展示了正确的对象。所以我只需要删除它。

PS没有deleteObject。现在NSManagedContext只有public func delete(_ sender: AnyObject?)


问题答案:

在您的情况下,提取的结果是托管对象 的
数组[Event],因此您可以枚举该数组并删除所有匹配的对象。示例(在提取错误的情况下使用try?而不是try!避免崩溃):

if let result = try? context.fetch(fetchRequest) {
    for object in result {
        context.delete(object)
    }
}

如果不存在匹配的对象,则提取成功,但是结果数组为空。

注意: 在您的代码中,object具有类型[Event],因此在

context.delete(object)

编译器创建对

public func delete(_ sender: AnyObject?)

的方法NSObject而不是预期的

public func delete(_ object: NSManagedObject)

的方法NSManagedObjectContext。这就是为什么您的代码可以编译但在运行时失败的原因。



 类似资料:
  • 问题内容: 对于如何迅速删除所有核心数据,我有些困惑。我创建了一个带有链接的按钮。单击按钮后,我将看到以下内容: 然后,我想出了各种方法来尝试删除所有核心数据内容,但似乎无法正常工作。我已经使用removeAll从存储的数组中删除,但是仍然不能从核心数据中删除。我假设我需要某种类型的for循环,但是不确定如何从请求中进行。 我尝试应用删除单行的基本原理 但是,这样做的问题是,当我单击按钮时,我没有

  • 我有一个使用ef核心代码优先方法构建的项目的审计机制。我已经在“OnModelCreating”函数中为一些表设置了“deleteBhavior”属性以级联。当我删除一个实体时,另一个实体会通过级联删除行为自动删除。现在一切都很好,我需要获取所有已删除的实体,但我不能。ChangeTracker不包含级联删除的实体。如何获取级联删除的值?有没有办法做到这一点?

  • 我目前对EF Core有一些问题。我有一些需要删除的数据,我正在努力查看流畅的API是如何工作的,正是关于函数。 考虑到微软自己网站的经典博客/帖子场景,我想知道到底是什么实体,OnDelete()是“目标”(因为没有更好的词),在某些情况下,它似乎是博客,在另一些情况下,是帖子。是否可以从两侧定义级联删除(即当父博客被删除时,帖子被删除),如果是这样,我认为代码应该如下所示: <代码>模型。实体

  • SQLAlchemy 1.4 / 2.0 Tutorial 此页是 SQLAlchemy 1.4/2.0教程 。 上一次: 使用核心或ORM选择行 |下一步: |next| 使用核心更新和删除行 到目前为止,我们已经讨论过 Insert ,这样我们就可以将一些数据放入我们的数据库中,然后花费大量时间在 Select 其处理用于从数据库检索数据的广泛的使用模式。在本节中,我们将介绍 Update 和

  • 主要内容:SqlSessionFactoryBuilder,SqlSessionFactory,SqlSessionMyBatis 有三个基本要素: 核心接口和类 MyBatis核心配置文件(mybatis-config.xml) SQL映射文件(mapper.xml) 下面首先介绍 MyBatis 的核心接口和类,如下所示。   每个 MyBatis 应用程序都以一个 SqlSessionFactory 对象的实例为核心。 首先获取 SqlSessionFactoryBuilder 对象,可以

  • 我正在开发一个以时事通讯风格界面为中心的iPad应用程序。我使用苹果的UIPageViewController来做到这一点。 我遇到了很多我不完全理解的错误,我希望有人能帮助我找到解决方法。 在这个界面上翻页时,应用程序偶尔会冻结(这就是为什么它如此令人沮丧,因为它不容易复制)。我在调试器中暂停应用程序,这是它显示给我的http://cl.ly/image/1y3c2x351t0T. 我很清楚这是