我正在从这个React Native模块Android Stacked Bars Chart中获取一些代码。我正在尝试使用NSURLConnection(已弃用)更新它以使用NSURLSession并报告上传的进度。
我能够将代码从NSURLConnection切换到NSURLSession并没有太大的困难,但我正在努力调用didReceiveData委托。为什么不调用didReceiveData委托?
这是我修改过的FileUpload.m
//Correct
public string Class3
{
get; set;
}
//Wrong
public string Class4
{
get { return Class4; }
set { Class4 = value; }
}
答案 0 :(得分:2)
对于使用NSURLSession的委托模式,我认为您应该通过以下方式创建NSURLSession:
[NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]
delegate:self
delegateQueue:[NSOperationQueue mainQueue]];
但不是:
[NSURLSession sharedSession];
另外我注意到您的NSURLSessionDataDelegate,NSURLSessionDelegate,NSURLSessionTaskDelegate与UIViewController一起使用;但是,您的NSURLSession和委托方法是在FileUpload.m中实现的。尝试编辑此行:
@interface FileUpload : NSObject <RCTBridgeModule>
为:
@interface FileUpload : NSObject <RCTBridgeModule, NSURLSessionDataDelegate, NSURLSessionDelegate, NSURLSessionTaskDelegate>
然后创建NSURLSessionDataTask而不使用完成处理程序:
NSURLSessionDataTask *task = [session dataTaskWithRequest:req];
看看是否有任何区别。