从api导入数据并在iphone应用程序中循环的最有效方法是什么?
我正在用objective-c开发一款全新的iphone应用程序,我想确保它是由福特公司自下而上开发的。因为我有白手起家的奢侈从api导入数据并在iphone应用程序中循环的最有效方法是什么?,iphone,ios,objective-c,api,data-manipulation,Iphone,Ios,Objective C,Api,Data Manipulation,我正在用objective-c开发一款全新的iphone应用程序,我想确保它是由福特公司自下而上开发的。因为我有白手起家的奢侈 向json api发出http请求并将数据存储在应用程序中以供操作的最有效方式(创建的最小内存占用)是什么?如果您的web服务api支持json,则使用json JSON分析器将解析JSON文本(如从请求的响应数据中接收到的),并将其转换为基础对象的相应层次结构——“表示”。这很容易实现,只需几行代码 根据您的描述,与网络相关的代码应该通过NSURLConnectio
向json api发出http请求并将数据存储在应用程序中以供操作的最有效方式(创建的最小内存占用)是什么?如果您的web服务api支持json,则使用json
JSON分析器将解析JSON文本(如从请求的响应数据中接收到的),并将其转换为基础对象的相应层次结构——“表示”。这很容易实现,只需几行代码
根据您的描述,与网络相关的代码应该通过NSURLConnection
使用委托方法实现,委托方法也是异步的。当需要自定义证书的身份验证和处理时,必须使用委托方法
对于中等规模的数据集,您当然可以选择一个可行的第三方网络库。它们还将支持自定义身份验证和证书处理
关于如何处理数据的问题:
一旦你有了代表你的资源的基础对象——例如用户、用户列表等,你就可以使用这个基础对象,创建或更新相应的“模型”。“模型”是“数据”的表示,例如用户或用户列表,通常是自定义类,可能是核心数据管理对象
当数据“小”时,这种简单的方法几乎适用于所有用例 当涉及到“大型”数据集时,这种方法将不再有效。经验法则:为基础对象分配的内存量大约是JSON文本字节大小的5到8倍。例如,30兆字节的JSON将需要大约200兆字节的表示。即使在现代设备上,这也可能导致内存警告,因为还有其他分配 处理“非常大”数据集的解决方案是将数据分块处理。也就是说,使用许多可能不同的专用和专门的“任务”,其工作负载只需要一个小的数据集。尽可能让这些任务并行运行。(我需要停在这里;)) 为了持久化您的数据,您可以直接使用SQLite,或者您可能希望使用核心数据—它使用SQLite作为备份存储如果您只想从一个大数据集的数据库中获取或插入对象,可以考虑使用SQLite——而不是出于性能原因使用核心数据。
如果您对“模型”对象进行了编辑、创建、删除、合并和搜索操作,用户将通过UI执行这些操作,或者通过在UI中显示结果的其他任务执行这些操作,则您可能希望使用核心数据 注:核心数据不是数据库 向第三方网络库发送一个单词: 我还没有看到任何在某些用例中提供我想要的灵活性的东西。更重要的是,没有一个是“可伸缩的”。也就是说,当您拥有大数据集(>10兆字节)时,您的应用程序开始变得不太理想—性能方面,内存方面的问题也越来越严重。对于大数据集和超大数据集,您的应用程序可能会阻塞 这些库中的大多数都会将整个响应数据累积到NSMutableData
对象中,并且不允许您在收到数据块时轻松处理它们。解决方法是使用一个临时文件,这需要在应用程序中添加额外的详细代码。请注意,在尝试解析30 MB的JSON文件后,您可能会收到内存警告-通过Wifi传输需要7秒钟
但是,数据集的大小在几兆字节之间并不是常见的情况。如果您的web服务API支持JSON,那么就使用JSON
JSON分析器将解析JSON文本(如从请求的响应数据中接收到的),并将其转换为基础对象的相应层次结构——“表示”。这很容易实现,只需几行代码
根据您的描述,与网络相关的代码应该通过NSURLConnection
使用委托方法实现,委托方法也是异步的。当需要自定义证书的身份验证和处理时,必须使用委托方法
对于中等规模的数据集,您当然可以选择一个可行的第三方网络库。它们还将支持自定义身份验证和证书处理
关于如何处理数据的问题:
一旦你有了代表你的资源的基础对象——例如用户、用户列表等,你就可以使用这个基础对象,创建或更新相应的“模型”。“模型”是“数据”的表示,例如用户或用户列表,通常是自定义类,可能是核心数据管理对象
当数据“小”时,这种简单的方法几乎适用于所有用例 当涉及到“大型”数据集时,这种方法将不再有效。经验法则:为基础对象分配的内存量大约是JSON文本字节大小的5到8倍。例如,30兆字节的JSON将需要大约200兆字节的表示。即使在现代设备上,这也可能导致内存警告,因为还有其他分配 处理“非常大”数据集的解决方案是将数据分块处理。也就是说,使用许多可能不同的专用和专门的“任务”,其工作负载只需要一个小的数据集。尽可能让这些任务并行运行。(我需要停在这里;)) 为了持久化您的数据,您可以直接使用SQLite,或者您可能希望