sca*_*tty 2 iphone cocoa-touch web-services
在iPhone应用程序中访问Web服务是我没有找到一个清晰,美观的解决方案的问题.我不是在谈论如何发送查询或解析响应,而是关于"大图"的答案.
忽略服务器端技术,您如何将Model对象插入Web服务?你如何设计你的代理对象?你如何缓存资源?
小智 5
如果您的Web服务恰好是Ruby on Rails应用程序,那么Objective Resource是一个很棒的工具:http://iphoneonrails.com/.
如果没有,那么我倾向于使用ASIHTTPRequest(http://allseeing-i.com/ASIHTTPRequest/),它提供了一个很好的网络层.根据API,您可以直接使用ASI对象,或者如果要添加按请求功能(例如身份验证或响应解析),则可以对现有ASI类进行子类化.
您通常希望在后台运行请求,以便在等待请求完成时不阻止UI.您总是可以使用后台线程路径,但ASIHTTPRequest提供的一个很好的"Objective C"样式方法是提供一个在请求完成时调用的委托(另请参阅http:// allseeing-中的 "创建异步请求")i.com/ASIHTTPRequest/How-to-use).在许多情况下,请求委托是发起请求的视图控制器.
模型层取决于复杂性,以及数据的格式.我使用过的大多数API都使用JSON,您可以使用它来解析SBJSON或yajl-objc.这些通常会为您提供解析为基类的数据,如NSString,NSArray和NSDictionary.有时这是足够的,或者如果您希望模型作为自己的类存在,那么您可以让模型从基类继承,该基类负责将NSDictionary/NSArray转换为属性.
最后,对于缓存,Core Data提供了一种保存到磁盘的好方法.对于内存中的缓存,您可以将请求发生在控制器之间共享的单独"管理器"类中.这些管理器使用如下所述的Singleton设计模式:Objective-C singleton应该是什么样的?.