ios - 如何将书签添加到 UITableView Cell 并保存到 CoreData?

标签 ios swift uitableview core-data cloudkit

我有一个关于向 UITableView 添加书签/收藏夹按钮的问题。目前我的 mainVC 有一个 tableView,它是从 CloudKit 中的公共(public)数据库填充的。如果我想添加一个书签/收藏夹按钮,用户可以在其中将该行的数据保存到 CoreData(字符串对象、图像、 bool 类型)中...我该如何执行?

我将按钮添加为 UITableViewCell 的导出。在 cellForRow 中,我添加了

cell.favoriteButton.tag = indexPath.row

然后我向该 MainVC 添加了 @IBAction addFavorites,但我不确定如何将所有对象从该行保存到 CoreData?

这是我保存到核心数据的方法:

if let managedObjectContext = (UIApplication.sharedApplication().delegate as? AppDelegate)?.managedObjectContext
{
   place = NSEntityDescription.insertNewObjectForEntityForName("Place", inManagedObjectContext: managedObjectContext) as! Place
   place.name = name!
   place.type = type!
   place.address = address!
   place.neighborhood = neighborhood!
   place.phoneNumber = phoneNumber!
   if let placeImage = imageView.image
   {
      place.image = UIImagePNGRepresentation(placeImage)
   }
   do {
      try managedObjectContext.save()
   } catch {
      print(error)
      return
   }

有什么建议吗?

最佳答案

首先,我认为使用标签并不是一个好主意。要识别带有按钮的行,请使用以下方法:

let point = button.convertPoint(CGPointZero, toView: tableView)
let indexPath = tableView.indexPathForRowAtPoint(point)!

第二,你从哪里获取变量?在您的代码中,您似乎正在使用与单元格关联的属性。这也不是一个好主意,因为您不应该使用 View 来读取数据 - 而是使用原始的 CloudKit 数据源。

第三,不建议将图像存储在 Core Data 中,除非它只是一个小缩略图。如果较大,请使用外部存储,在应用程序文档文件夹中设计一个方案或从 CloudKit 按需下载。

最后,尚不清楚您还需要什么。我想您想在表格 View 中显示收藏夹状态。如果您可以包含某种唯一标识符,则可以在核心数据对象集中的 cellForRowAtIndexPath 中检查此标识符是否存在,并相应地标记单元格。

关于ios - 如何将书签添加到 UITableView Cell 并保存到 CoreData?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33613785/

相关文章:

iOS - 自定义 AccessoryView 未显示在 UITableViewCell 中

ios - 自动布局和 UIView 动画 - 两个连接 View 之间的间隙

javascript - 如何在 Swift 中获取 UIWebView 中的 JS 值?

ios - 查询 Firebase 数据库中的多个键

ios - 无法识别的选择器发送到实例.. MapView 委托(delegate)的 'NSInvalidArgumentException'

iOS - 在 VIPER 模式上配置自定义 UITableViewCell

ios - 如何在单击按钮时选择所有 uitableview 单元格

ios - 如何从关闭命令访问以前的 View Controller

ios - Objective-C自特定日期以来返回的年份和天数

ios - 如何在使用 NSURLSession 时传递凭据