从核心数据模型 Swift 3 中删除一行

Posted

技术标签:

【中文标题】从核心数据模型 Swift 3 中删除一行【英文标题】:Remove ONE row from Core Data Model Swift 3 【发布时间】:2017-06-23 23:57:35 【问题描述】:

我正在使用核心数据模型来存储数据。 我可以以编程方式添加数据,但删除特定行对我来说是个问题。

歌曲型号:

在viewDidLoad中添加新数据

let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context = appDelegate.persistentContainer.viewContext

//add a new data
let newSong = NSEntityDescription.insertNewObject(forEntityName: "Song", into: context)

newSong.setValue("turk_milleti_demokrattir", forKey: "path")
newSong.setValue("song1", forKey: "name")

do
    try context.save() 
    print("success")


catch 
    print(error)

添加新行没有问题。我想从核心数据模型中删除特定行。 例如,假设我想删除名为 song1 的歌曲。如何删除 song1

如果是SQL,从数据库中删除一行是这样的:

DELETE FROM Song WHERE name='song1';

在核心数据 - Swift 3 中,我是新手。如何删除特定行?在 Swift 3 - Core Data 中,什么相当于 SQL 中的 DELETE - WHERE 语句?

【问题讨论】:

【参考方案1】:

我希望您的模型类在您的项目中自动创建,如果有帮助,请检查以下代码

      let fetchRequest: NSFetchRequest<Song> = Song.fetchRequest()
        fetchRequest.predicate=NSPredicate(format: "name = %@", "song1")
        var fetchedItems = [Song]()
        do
            fetchedItems=try context.fetch(fetchRequest)
        catch
            fatalError("Could not fetch")
        
        for item in fetchedItems
            context.delete(item)
        
        context.save()

【讨论】:

非常感谢。你是救生员。

以上是关于从核心数据模型 Swift 3 中删除一行的主要内容,如果未能解决你的问题,请参考以下文章

激活滑动删除时从一行中删除核心数据

当另一个模型正在使用该对象时,从核心数据中删除 NSManagedObject

Swift 2:将 JSON 原生序列化为核心数据模型对象

我从项目中删除了一些核心数据生成文件,但 Xcode 仍然尝试编译它们

如何在 swift 3 中从核心数据中删除对象

Swift:在核心数据模型中搜索字符串