所以我一直在尝试设计一种在iPhone版本中为我的模型抓取数据的简洁方法。我的应用程序的所有数据都来自JSON API。
所以现在当VC需要一些模型时,它会自己执行JSON调用(asynch),当它接收数据时,它会构建模型。它有效,但我正在尝试一种更清晰的方法,DAO为我检索信息并以异步方式返回模型。
我最初的想法是为我的DAO构建一个协议,这样VC就可以实例化DAO并使自己成为委托。当您请求数据[DAOinstance getAllUsers]时,DAO会执行所有网络请求,然后当它有数据时,它会调用其委托(VC)上的方法来传递数据。
所以我认为这是一个很酷的解决方案,但我意识到如果我需要在同一个VC中为不同的目的使用相同的DAO,我的委托方法必须根据哪个DAO实例发起请求来分支逻辑。
所以我的第二个想法是能够将'handler'选择器传递给DAO对象,这是典型的javascript模式。因此,我会说[DAOinstance getAllUsersWithSelector:“TheHandlerFunctionOnMyVC:”]而不是官方协议。然后,当DAO完成其网络活动时,它将调用VC上传递的选择器,并将数据传回。
所以我完全走向错误的方向吗?似乎可能是一个好的方法。
有关设计此类数据层的任何指示或文章都会很精彩。
谢谢! 鲍勃
答案 0 :(得分:2)
当你需要回调并且不想在处理程序方法调用者上进行分支时,传递一个目标(这里是你的VC)和一个选择器(处理程序方法)是很常见的。这称为目标选择器模式。
除此之外,您可能需要查看有关此类可能设计的RestfulCoreData和CoreResource框架。
着名的ObjectiveResource框架也可以提供良好的洞察力。