Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从api导入数据并在iphone应用程序中循环的最有效方法是什么?_Iphone_Ios_Objective C_Api_Data Manipulation - Fatal编程技术网

从api导入数据并在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

我正在用objective-c开发一款全新的iphone应用程序,我想确保它是由福特公司自下而上开发的。因为我有白手起家的奢侈


向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,或者您可能希望