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

我将按钮添加为UITableViewCell的插座。在cellForRow中,我添加了

cell.favoriteButton.tag = indexPath.row


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

这是我保存到Core Data的方法:

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)!


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

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

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

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

10-12 14:46
查看更多