好吧,所以這裏是我在其中一個項目中使用的東西,當我找不到其他東西時。
斯威夫特3
使子類的NSObject的(因爲一個子類URLSession不會讓你設置的配置和其他參數作爲唯一指定初始化有的init()),它包含的信息像在IndexPath中一樣啓動上載過程的單元以及一個URLSession對象。
每當你想上傳時(使用URLSession的uploadTask方法),使用這個子類來創建新的URLSession。
創建uploadTask並開始上傳。
您還必須製作自己的協議方法,這些方法由URLSession的常規協議方法調用,以將自定義子類而不是URLSession對象發送給所需的委託。
然後在該委託中,您可以檢查存儲在您從上一步獲得的自定義子類中的indexPath的信息,並更新相應的單元格。
通過使用通知我可以實現同樣的效果。
下面是我寫的示例應用程序的截圖:
public class TestURLSession:NSObject, URLSessionTaskDelegate {
var cellIndexPath:IndexPath!
var urlSession:URLSession!
var urlSessionUploadTask:URLSessionUploadTask!
var testUrlSessionDelegate:TestURLSessionTaskDelegate!
init(configuration: URLSessionConfiguration, delegate: TestURLSessionTaskDelegate?, delegateQueue queue: OperationQueue?, indexPath:IndexPath){
super.init()
self.urlSession = URLSession(configuration: configuration, delegate: self, delegateQueue: queue)
self.cellIndexPath = indexPath
self.testUrlSessionDelegate = delegate
}
func uploadTask(with request: URLRequest, from bodyData: Data) -> URLSessionUploadTask{
let uploadTask = self.urlSession.uploadTask(with: request, from: bodyData)
self.urlSessionUploadTask = uploadTask
return uploadTask
}
public func urlSession(_ session: URLSession, task: URLSessionTask, didSendBodyData bytesSent: Int64, totalBytesSent: Int64, totalBytesExpectedToSend: Int64){
self.testUrlSessionDelegate.urlSession(self, task: self.urlSessionUploadTask, didSendBodyData: bytesSent, totalBytesSent: totalBytesSent, totalBytesExpectedToSend: totalBytesExpectedToSend)
}
}
protocol TestURLSessionTaskDelegate : URLSessionDelegate {
func urlSession(_ session: TestURLSession, task: URLSessionTask, didSendBodyData bytesSent: Int64, totalBytesSent: Int64, totalBytesExpectedToSend: Int64)
}
編輯們的歡迎。
多張圖片上傳,什麼ü通過它的意思是,你下載或上傳圖片到服務器 – ChenSmile
我正在使用API將圖像上傳到服務器。 –
您是否使用AFNetworking上傳圖片? –