我们正在使用Alamofire 4并希望将URLSessionTask
匹配到数据库中的实体。
我们首先使用taskDescription
的{{1}}字段将数据库实体的UUID放在那里,但后来发现Alamofire在请求重试时创建了一个新任务,并且不会复制该字段。 URLSessionTask
也随着每个创建的新任务而变化,似乎无法跟踪Alamofire中taskIdentifier
的变化。
是否有其他技术可以匹配数据库或文件中的任务和实体?最终目标是在后台上传请求成功时删除文件+实体。这可能发生在应用程序终止后,因此我们目前将信息存储在数据库中。
答案 0 :(得分:1)
假设AlamoFire没有做一些坚果,你应该可以这样做:
NSString *const identifierProperty = @"com.you.yourProduct.requestID";
NSString *myIdentifier = [NSUUID UUID].UUIDString;
[NSURLProtocol setProperty:myIdentifier
inKey:identifierProperty
inRequest:theURLRequest];
然后,稍后,将其取回:
NSString *requestID = [NSURLProtocol propertyForKey:identifierProperty
inRequest:theURLRequest];
为Objective-C道歉,但它应该很容易转换为Swift。
一旦这样做,每当复制请求时都应复制属性,就像请求中的任何一等属性一样。您甚至可以考虑在NSURLRequest
上创建一个类别,以将基础值公开为实际的本机属性。