【发布时间】:2013-08-26 11:01:10
【问题描述】:
我有一个自己的网站,我想编写一个应用程序,从中加载数据(字符串/文本)以填充 iPhone 上的表格视图(如待办事项列表)。我想一直更改我的应用程序(表格视图)的内容,而不在 App Store 中进行更新。当应用程序启动时,它应该从我的网站获取内容...
我应该使用 FTP 来做类似的事情,还是有更好的方法来加载和操作数据?
【问题讨论】:
我有一个自己的网站,我想编写一个应用程序,从中加载数据(字符串/文本)以填充 iPhone 上的表格视图(如待办事项列表)。我想一直更改我的应用程序(表格视图)的内容,而不在 App Store 中进行更新。当应用程序启动时,它应该从我的网站获取内容...
我应该使用 FTP 来做类似的事情,还是有更好的方法来加载和操作数据?
【问题讨论】:
如果内容是简单的文本/字符串,则不需要 FTP(这在从 Web 到应用程序的大文件传输的情况下很有用),那么最合适的方法是 RESTful Services。
RESTful Services 能够以非常简单的方式处理GET/POST 数据。因此,您可以轻松地将数据从网站传输到iOS application。每当您更改数据时,它都会自动更改iPhone app 的数据。所以App Store上传申请后就不用改了。
希望这对您有所帮助!
【讨论】:
最好的方法是使用 JSON 在设备和服务器之间传递数据。 它是轻量级的并且很容易解析。
要通过网络进行通信,我会向您推荐 AFNetworking 用于发送和接收数据(您也可以使用 NSURLConnection,但 AFNetworking 是在它之上构建的并且非常高效)
如果您正在寻找超快速的解决方案,那么您也可以选择PubNub
【讨论】:
为了获得最佳的开发者体验,您应该在 REST 服务中使用 JSON 或 XML。
我建议你使用CoreData 和NSFetchedResultController。这是一个非常明确的解决方案。
但对于 simleproject,您可能有 NSJSONSerialization 类或 NSXMLParser。在我看来,您应该尝试 JSON。在这种情况下,文档是直截了当的。
假设您有 JSON REST API:
dispatch_queue_t fetchQueue = dispatch_queue_create("nameOfYourQ", NULL);
dispatch_async(fetchQueue, ^{
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://yourlink"]];
NSArray *arr = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
dispatch_async(dispatch_get_main_queue(), ^{
[yourTableView reloadData];
});
});
就是这样。
【讨论】:
NSURLRequest 和 NSURLConnection 可以让您更好地处理任何连接或 HTTP 错误
NSURLConnection 代表更强大。我建议的这个解决方案主要被我用来在 tableView 中设置拇指。当我使用 JSON 文件时,我使用NSURLConnection。但是对于初学者来说,这应该可以完美地工作。请注意,NSJSONSerialization 在最后一个参数中有指向错误的指针。
一个简单的解决方案是通过 HTTP 使用 JSON。要制定更稳定的解决方案,您可以使用完整的RESTful web service。使用 HTTP 状态代码通知您的客户端应用程序发生了什么。
使用AFNetworking 将使调用Web 服务和解析JSON 响应变得非常容易。
【讨论】:
NSJSONSerialization 中并不是很复杂。就一行代码……