ios - 创建 NSObject 不知道从哪里下载

标签 ios model-view-controller nsobject

我对实现 NSObject 模型的正确方法有点困惑。我正在创建一个 Book 类,它将记录一些数据(NSString、UIImage 等),但我将数据存储在服务器上。我是否应该为 Book 创建一个方法,例如 -(void)loadDataFromServerWithID:(NSString *)bookID 然后当我创建一个 Book 时:

Book *book = [Book alloc] init];
[book loadDataFromServerWithID:@"1234"];

并在 loadDataFromServer 方法中下载 JSON 数据并将实例变量分配给对象?

我一直在想很多方法可以做到这一点,但我不确定这样做是否有效/明智。

感谢您的帮助。

最佳答案

实现此目的的一种方法是只让一个类负责与服务器通信,然后在该类中有一个名为 bookFromServerWithID: 的方法,它返回一个准备就绪的新书对象。其他变体包括某种形式的回调以避免阻塞主线程。

要进行异步加载,您将创建一个类似于 [NSURLConnection sendAsynchronousRequest:queue:completionHandler:] 的方法并且可能会在加载程序的某处调用提到的方法。在回调中,您将解析来自连接的数据并将回调提供给您的方法 Book 对象。

如果您之前没有使用过队列,Concurrency Programming Guide是一本有用的(如果稍长和深入)阅读。

关于ios - 创建 NSObject 不知道从哪里下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11057771/

相关文章:

objective-c - 使用 AVFoundation 捕获视频时崩溃

ios - 点击时不出现复选标记

Java:具有后台线程的 GUI 应用程序

cocoa - 正确处理异步 NSObject

swift - Swift 4 中的 KVO 监听器问题

ios - UITextField shouldChangeCharactersInRange 仅调用一次

ios - 如何转换音频以便可以跨设备传输

c# - Winforms MVP 网格事件问题

javascript - 当 AngularJS 中的模型更新时, View 不会更新

ios - 可以在我调用 performSelectorOnMainThread 后释放我的对象