小编Jac*_*ite的帖子

iOS - 本地保存图像的最佳实践 - NSCache vs保存在文档目录中

我正在开发一个类似于Instagram Feed的应用程序(包含图像和一些标签的单元格的表格视图).

对于我从数据库中获取的所有数据,我正在使用数据任务(因为接收它们并不需要太多),但是对于图像(我们使用数据请求获取它们的URL),我需要保存在本地以备将来使用(改善用户体验).

我的逻辑如下:保存在NSCache或文档目录中,文件夹中的图像带有下载日期(创建一次并附加所有其他图像,如果需要)(我正在删除不是来自最近的7个文件夹)几天,然后对于TableView,只是从那里加载,所以tableview将平滑滚动,不会直接从其委托方法加载网址.那么根据我的需求,NSCache或文档目录,哪里有更好的存储位置.

期待听到您的建议,谢谢!

uiimage ios nscache nsurlsession

15
推荐指数
1
解决办法
9396
查看次数

从完成处理程序中获取NSURLSession DownloadTaskWithRequest中的数据

所以我很难理解某些东西.这是我对NSURSession的理解:

  • 一般来说,我有2个选项(据我所知)DataTask(ex dataTaskWithRequest)DownloadTask(ex DownloadTaskWithRequest) - 使用他们的委托方法,使用完成处理程序,不能两者兼顾.我已经设法使用dataTaskWithRequest接收DATA,如下所示:

    let request = NSMutableURLRequest(URL: dataSourceURL!)
    request.HTTPMethod = "POST"
    
    let postString = "lastid=\(id)"
    request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)
    let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
        data, response, error in
    
        if error != nil {
            println("error=\(error)")
            return
        }
        if data != nil {
            println("works")
            //Handle data
    
    
        }
        //println("response = \(response)")
    
    
    }
    task.resume()      
    
    Run Code Online (Sandbox Code Playgroud)

它完美地运作.问题是我需要将数据下载到磁盘而不是下载到内存(我正在下载图像).所以我尝试使用DownloadTaskWithRequest +他的完成处理程序,我注意到他所采用的参数是相同的,期望第一个是NSURL,而DataTaskWithRequestNSData,因此它使事情变得非常简单.恩.

 let task2 = NSURLSession.sharedSession().downloadTaskWithRequest(request, completionHandler: { (location : NSURL!, response : …
Run Code Online (Sandbox Code Playgroud)

nsdata ios nsurlsession nsurlsessiondownloadtask swift

9
推荐指数
1
解决办法
8473
查看次数