iOS中是不是有任何方法可以从Detail View浏览Core Data对象,类似于“Notes”应用程序的功能
Posted
技术标签:
【中文标题】iOS中是不是有任何方法可以从Detail View浏览Core Data对象,类似于“Notes”应用程序的功能【英文标题】:Is there any way in iOS to browse through Core Data objects from the Detail View, a function similar to "Notes" appiOS中是否有任何方法可以从Detail View浏览Core Data对象,类似于“Notes”应用程序的功能 【发布时间】:2013-03-19 17:03:23 【问题描述】:我找不到太多关于这个的信息,所以我不知道从哪里开始。我要做的是在我的详细信息视图上添加一个 UIButton,这样当我按下它时,它将从表视图加载下一个核心数据对象,类似于“Notes”应用程序。关于如何做到这一点的任何建议?谢谢
【问题讨论】:
【参考方案1】:委托模式怎么样?
使主视图控制器成为详细视图控制器的委托。当您按下“下一步”按钮时,向委托(您的表格视图控制器)发送一条消息。然后,委托将使用下一个对象设置详细视图。
我不会向细节视图控制器添加任何代码来确定下一个对象。您的 tableview 控制器已经有了这些方法。
【讨论】:
同意,我们对 cmets 列表使用类似的模式,请参阅 github.com/wordpress-mobile/WordPress-ios/blob/3.5.3/WordPress/… 和 github.com/wordpress-mobile/WordPress-iOS/blob/3.5.3/WordPress/…【参考方案2】:您最好的选择是执行一个获取请求,该请求获取您希望连续加载的所有对象。这实际上不会获取数据,但会“错误”对象。故障基本上为您提供对核心数据实体的引用,而无需实际检索该实体。您的请求将返回一个 NSArray,该 NSArray 根据您加载到获取请求对象中的排序描述符进行排序。然后,您可以拥有一个本地属性来跟踪您当前在 NSArray 中的哪个索引,并在按下 UIButton 时简单地加载数组中的下一个对象。当您从数组中加载对象时,核心数据将自动检索该实体的所有属性。
【讨论】:
【参考方案3】:如果您的模型具有与 tableView 中的每个对象对应的唯一值,您可以将对象属性加载到 prepareForSegue 中的字典数组中并将其传递给详细视图,确保存在一对一indexPath.row 中的对象与数组的 objectAtIndex 之间的对应关系。
确保您抓取所选行的索引以确定您在列表中的位置,然后您可以在每次点击 UIButton 时遍历字典数组。如果您需要做的不仅仅是填充详细视图,您可以获取与每个字典对象对应的唯一模型对象。
它不像使用原始对象那样干净,但它解决了 MySpecialPurpose 提到的错误问题。
【讨论】:
【参考方案4】:您可以为您的详细信息视图设置一个委托,询问它的主视图在按下按钮时要做什么(或者只是为给定项目提供下一个项目),这是我认为的最佳解决方案,或者将模型对象列表保存在视图控制器都可以访问和查询的单独对象中。虽然这不是一个很好的模式,也没有真正反映视图的层次结构,也没有反映面向对象编程的关键规则之一:最小特权。
【讨论】:
以上是关于iOS中是不是有任何方法可以从Detail View浏览Core Data对象,类似于“Notes”应用程序的功能的主要内容,如果未能解决你的问题,请参考以下文章
在 AWS 解析器映射模板中,是不是有任何方法可以从对象中删除字段?
在 eclipse RCP 中安装新插件/功能后,是不是有任何方法可以自动从磁盘中清除旧插件/功能?
在使用 python 进行网络抓取时,是不是有任何直接的方法可以从输出中删除 \xa0 [重复]