我的应用程序从网络服务器下载照片。是从服务器控制器的业务或数据业务下载照片信息?我的意思是我应该在控制器类中下载数据
Photo.title = [self getPhotoInfoFromServer: url];
还是数据类?
[Photo getPhotoInfoFromServer: url];
答案 0 :(得分:1)
您应该将照片下载到数据类,然后将viewControllers下载到数据类可以轻松获取的数据类。其实你应该按照MVC在哪里
M =模态(您的数据类)
C =控制器类
V =查看控制器显示的内容
答案 1 :(得分:1)
我更喜欢使用专用服务器类来实例化模型,并且在控制器中使用:[photoServer getPhotoFromURL:URL]
或[photoServer getPhotoFromURL:URL completion:^(Photo *photo, NSError *error){...}]
为什么要使用专用服务器类?
+[Photo getPhotoFrom...]
方法,并且会妨碍Photo类的可重用性和可维护性。为什么要从控制器调用此代码?
答案 2 :(得分:1)
UIViewController用于控制视图。它意味着交互(为视图提供良好的数据,并回答查看交互)。
模型/实体可以由独立源创建(除非源本身与您的模型在语义上链接)。无论是从服务器检索的数据还是从本地相机胶卷图片中创建的照片,照片都是照片。
您应该使用自定义DataFetcherController来获取远程数据并将其转换为实例。
您的UIViewController subclass
需要一张照片列表。它要求PhotoServerFetcherController
从服务器获取数据。如果需要,提取器可以查看其缓存并向服务器发出请求。当PhotoServerFetcherController
获取数据并将其解析为Photo
实体的实例并将其返回给UIViewController时。
最好是创建自己的FetcherController
界面(@protocol
关键字)。你可以处理2个异步回调:success
包含数据,failure
包含错误(连接错误输入?)。
您可以通过多种方式实现这一点,1对1互动的主要2种模式为delegate
或block callbacks
。