我在字符串版本中有一个url数组(我使用字符串,因为在我的应用程序的其他部分需要字符串版本)。
我已将字符串转换为网址,然后尝试使用AlamoFire下载图像,然后使用FileManager保存它们。
尝试这个时,我无处可寻,并且已经遍布堆栈溢出,只是让自己更加困惑......
假设我有一个字符串网址数组,例如
["www.url1.com/image1.png","www.url2.com/image2.png"]
,数组长度在5-1000个网址之间(取决于用户选择显示的数量)
如何将这些图像保存到文件管理器或缓存中,以便每次显示视图时都不会重新下载图像? 此外,这些图像将被命名为' 0.png',' 1.png'等等,因此名称反映了它们在数组中的索引。
答案 0 :(得分:0)
不会为你编写代码,但这是我采取的一般方法:
FileManager
获取FileManager.SearchPathDirectory.cachesDirectory
。(Swift 4; Swift 3中的名字可能略有不同,不记得我的头顶)
使用.appendingPathComponent
创建一个以应用程序的包标识符命名的子目录。
如果子目录不存在,则创建子目录。
使用您喜欢的任何组织方案,在代表您的网络网址的子目录中构建文件的网址。
检查您刚刚创建的网址,以查看该文件是否存在。如果是,请阅读。
如果步骤5中的文件不存在,请创建该文件,从网络下载数据,并将其存储在文件中。
请注意,这一切都假设您一次只有一个线程读取或写入缓存。如果您的应用程序是多线程的,则需要设置适当的安全措施以防止竞争条件。