使用Swift中的核心数据保存一个特定对象

时间:2017-02-16 00:32:22

标签: ios core-data swift3

我从网络服务中获取数据。从这些数据中,我通过以下命令创建了托管对象:

let videoTitle = snippet["title"] as! String
let videoDescription = snippet["description"] as! String
let videoThumbnail = ((snippet["thumbnails"] as! NSDictionary)["default"] as! NSDictionary)["url"] as! String
guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
    return
}
let managedContext = appDelegate.persistentContainer.viewContext
let entity = NSEntityDescription.entity(forEntityName: "YTVideo",
                                        in: managedContext)!
let video = YTVideo(entity: entity, insertInto: managedContext)
video.videoID = videoID
video.videoTitle = videoTitle
video.videoDescription = videoDescription
video.videoThumbnail = videoThumbnail
video.isFavorite = false
ytVideos.append(video)

在代码中,ytVideos是一个数组。 现在,用户可以选择保存对象。如果他选择保存对象,我想使用命令将其放入持久存储中:

managedContext.save()

但是,这将保存我创建的所有对象。 如何保存特定对象? 当然,我总是可以创建另一个模型,让用户玩这个模型的对象,然后使用模型YTVideo来获取核心数据,但为了简单起见,我只想为我的应用程序使用一个模型。我该怎么做? 非常感谢。

1 个答案:

答案 0 :(得分:0)

保存一个对象的简单方法是创建子托管对象上下文,然后在该上下文中创建特定对象。现在,在父上下文中调用save之前,它不会真正保存到持久存储中。如果你真的希望它独立于所有其他对象而持久化,那么创建一个对等上下文。从同行中拯救将推送到商店。也就是说,您需要将这些值读入上下文才能使用它们。