为什么我得到太多打开文件错误?

时间:2017-10-20 11:04:31

标签: ios swift uiimage nsurlsession

我正在尝试使用Swift 4可解码的JSON方法从API下载大约1100ea 32x32 .png图标,然后尝试将其放入UIImage数组中。

然而,在208之后我收到错误"太多打开文件"。

那么如何下载其余的图标并摆脱这个错误呢?

以下是错误显示的方式:

  

2017-10-20 14:06:34.073515 + 0300 myProject [2205:286014] [] libsystem_network.dylib:nw_route_get_ifindex :: socket(PF_ROUTE,SOCK_RAW,PF_ROUTE)失败:[24]打开文件太多

这是代码:

func getImageFromWeb(_ urlString: String, closure: @escaping (UIImage?) -> ()) {
    guard let url = URL(string: urlString) else {
        return closure(nil)
    }

    let task = URLSession(configuration: .default).dataTask(with: url) { (data, response, error) in
        guard error == nil else {
            print("error: \(String(describing: error))")
            return closure(nil)
        }
        guard response != nil else {
            print("no response")
            return closure(nil)
        }
        guard data != nil else {
            print("no data")
            return closure(nil)
        }
        DispatchQueue.main.async {
            closure(UIImage(data: data!))
        }
    }; task.resume()
}

func downloadItemImages(){
    // Loop through items to get their relative logos
    for i in stride(from: 0, to: items.count, by: 1) {

        // Getting item logos (.png) and adding into image array
        let imageUrl = "https://files.test/img/items/32x32/\(items[i].id!).png"

        getImageFromWeb(imageUrl) { (image) in
            if let image = image {
                imgItems.append(image)
            }
        }
    }
    print("Total image putted into image array: \(imgItems.count)")
}

0 个答案:

没有答案