Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.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
iPhone::Objective-C-将Restful Web服务中的图像列表加载到UITableView中_Iphone_Objective C - Fatal编程技术网

iPhone::Objective-C-将Restful Web服务中的图像列表加载到UITableView中

iPhone::Objective-C-将Restful Web服务中的图像列表加载到UITableView中,iphone,objective-c,Iphone,Objective C,大家好 我已在问题标题中实现了上述机制,其工作原理如下: 创建一个NSURLConnection并调用my json webservice,以获取包含每个记录的图像URL的记录列表。 在ConnectionIDFinishLoading委托中,我将返回的记录设置为我的NSArray,并使用NSArray重新加载UITableView,但此时不加载图像。 在同一个ConnectionIDFinishLoading委托中,对于每个检索到的记录,我触发单独的连接以获取图像数据。假设我有5条从以前的js

大家好

我已在问题标题中实现了上述机制,其工作原理如下:

创建一个NSURLConnection并调用my json webservice,以获取包含每个记录的图像URL的记录列表。 在ConnectionIDFinishLoading委托中,我将返回的记录设置为我的NSArray,并使用NSArray重新加载UITableView,但此时不加载图像。 在同一个ConnectionIDFinishLoading委托中,对于每个检索到的记录,我触发单独的连接以获取图像数据。假设我有5条从以前的json Web服务返回的记录,我将发出5个GET请求来获取每个记录的图像数据。 然后这一次,在ConnectiondFinishLoading委托中,我将知道这一次它是从获取图像数据的请求中触发的,我将图像数据设置到UITableView数据源的NSArray中,并重新加载数据。对于5条记录,表将被重新加载5次。 只有在不重新加载NSArray的最后2个元素的情况下,一切似乎都正常工作,否则,我将遇到exc_bad_访问异常。 谢谢你的忠告。这可能是一种愚蠢的做法


你描述自己所做事情的方式似乎还可以。您可以使用reloadrowsatindexpath在接收每个单元格的图像时更新它,而不是更新整个表

。搜索延迟加载将获得更多的示例


我认为使用核心数据是正确的方法,因为它允许您使用NSFetchedResultsController为您处理所有表维护。最初,您加载一个包含具有nil image path属性的对象的表,以便cellForRowAtIndexPath可以显示占位符或不显示任何内容。异步获取返回的映像时,将映像写入本地存储器,并使用该记录应显示的映像路径更新核心数据。当您更改核心数据时,您会在“获取结果”控制器上执行performFetch,并且您的表会正确显示。如果您遵循,您甚至不需要重新加载表中的数据。

谢谢您的输入!我一定会试试的感谢您提供延迟加载的信息,但我的问题与加载无关,而是在第一次加载期间,当我将图像占位符初始化为UIImage时,我犯了一个小小的内存分配错误我已经按照您的建议使用reloadRowsAtIndexPaths方法来避免在整个tableView中重新加载数据