如何将书签添加到 UITableViewCell 并保存到核心数据?
Posted
技术标签:
【中文标题】如何将书签添加到 UITableViewCell 并保存到核心数据?【英文标题】:How to add bookmarkt to UITableView Cell & save to CoreData? 【发布时间】:2015-11-09 16:34:12 【问题描述】:我有一个关于向 UITableView 添加书签/收藏按钮的问题。目前我的 mainVC 有一个从 CloudKit 中的公共数据库填充的 tableView。如果我想添加一个书签/收藏按钮,用户可以在其中将该行的数据保存到 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
有什么建议吗?
【问题讨论】:
为什么不使用 parse.com 来保存对象? 【参考方案1】:首先,我认为使用标签不是一个好主意。要使用按钮识别一行,请使用以下方法:
let point = button.convertPoint(CGPointZero, toView: tableView)
let indexPath = tableView.indexPathForRowAtPoint(point)!
其次,您从哪里获取变量?在您的代码中,您似乎正在使用与单元格关联的属性。这也不是一个好主意,因为您不应该使用视图来读取数据 - 而是使用原始 CloudKit 数据源。
第三,不建议将图像存储在 Core Data 中,除非它只是一个小缩略图。如果它更大,请使用外部存储,在您的应用程序文档文件夹中设计方案或从 CloudKit 按需下载。
最后,不清楚您还需要什么。我想您想在表格视图中显示收藏状态。如果您可以包含某种唯一标识符,您可以在您的核心数据对象集中检查cellForRowAtIndexPath
中是否存在此标识符并相应地标记单元格。
【讨论】:
以上是关于如何将书签添加到 UITableViewCell 并保存到核心数据?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 UIViewController/UITabBar 添加到 UITableViewCell?