1

所以我一直在尝试设计一种简洁的方式来为我在 iPhone 领域的模型获取数据。我的应用程序的所有数据都来自 JSON API。

所以现在当 VC 需要一些模型时,它会自己调用 JSON(异步),当它接收到数据时,它会构建模型。它可以工作,但我正在尝试一种更简洁的方法,DAO 为我检索信息并返回模型,所有这些都以异步方式进行。

我最初的想法是为我的 DAO 构建一个协议,这样 VC 将实例化一个 DAO 并使自己成为委托。当您请求数据 [DAOinstance getAllUsers] 时,DAO 将完成所有网络请求,然后当它拥有数据时,它会调用其委托(VC)上的方法来传递数据。

所以我认为这是一个很酷的解决方案,但我意识到如果我需要在同一个 VC 中将同一个 DAO 用于不同的目的,我的委托方法必须根据哪个 DAO 实例发起请求来分支逻辑。

所以我的第二个想法是能够以典型的 javascript 模式将“处理程序”选择器传递给 DAO 对象。所以不是官方协议,我会说类似 [DAOinstance getAllUsersWithSelector:"TheHandlerFunctionOnMyVC:"] 这样当 DAO 完成其网络活动时,它会调用 VC 上传递的选择器,并将数据传回。

那么我在这里完全走错了方向吗?似乎是一个不错的方法。

任何关于设计这种数据层的指针或文章都会很不错。

谢谢!鲍勃

4

1 回答 1

2

当您需要回调并且不想在处理程序方法调用者上分支时,传递目标(此处为您的 VC)和选择器(处理程序方法)是很常见的。这称为目标选择器模式。

除此之外,您可能还想查看RestfulCoreDataCoreResource框架,了解可能的设计。

著名的ObjectiveResource框架也可能提供很好的洞察力。

于 2010-06-20T01:51:47.263 回答