从 Swift 到 Objective C 后台升级的翻译数据任务功能
Posted
技术标签:
【中文标题】从 Swift 到 Objective C 后台升级的翻译数据任务功能【英文标题】:Translate data task function for background upgrade from Swift to Objective C 【发布时间】:2021-07-06 09:05:34 【问题描述】:我正在尝试在 AppDelegate.m 中实现一个函数,以便在后台更新我的应用。
我在网上找到了一篇文章(这是链接:https://medium.com/@vialyx/ios-dev-course-background-modes-fetch-70c18f9f58d5),但它是用 Swift 编写的,我无法将它从 Swift 转换为 Objective C 这部分代码:
func application(_ application: UIApplication, performFetchWithCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void)
// Create url which from we will get fresh data
if let url = URL(string: "https://www.vialyx.com")
// Send request
URLSession.shared.dataTask(with: url, completionHandler: (data, response, error) in
// Check Data
guard let `data` = data else completionHandler(.failed); return
// Get result from data
let result = String(data: data, encoding: .utf8)
// Print result into console
print("performFetchWithCompletionHandler result: \(String(describing: result))")
// Call background fetch completion with .newData result
completionHandler(.newData)
).resume()
谁能帮助我?谢谢。
【问题讨论】:
【参考方案1】:你可以试试
- (void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
// Create url which from we will get fresh data
NSURL*url = [[NSURL alloc] initWithString:@"https://www.vialyx.com"];
[[NSURLSession sharedSession ] dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error)
if (data != nil)
NSString* result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
// Print result into console
NSLog(@"performFetchWithCompletionHandler result: %@",result);
completionHandler(UIBackgroundFetchResultNewData);
else
completionHandler(UIBackgroundFetchResultFailed);
];
【讨论】:
可以在后台下载使用吗? @Sh_Khan 谢谢,除了 NSLog 行外一切正常。可能你忘了在冒号后面插入 %@。 好吧,我不知道。这就是为什么问。谢谢:)以上是关于从 Swift 到 Objective C 后台升级的翻译数据任务功能的主要内容,如果未能解决你的问题,请参考以下文章
使用 PromiseKit 从 Objective C 到 Swift 的桥接
如何将回调对象从 Swift 传递到 Objective C 类并用作回调?