我正在开发一款iPhone应用程序
我从root.plist中读取了一个键,如下所示:
NSString *Key1Var = [[NSUserDefaults standardUserDefaults] stringForKey:@"Key1"];
Run Code Online (Sandbox Code Playgroud)
("Key1"是PSMultiValueSpecifier已在root.plist中设置了默认字符串值的)
一旦用户进行设置,这工作正常.但是如果用户在进行任何设置之前运行应用程序,他将获得nil"Key1".在这种情况下,我期待我为"Key1"设置的默认值.我需要做什么,以便用户不必进行设置,以使应用程序第一次运行?
问候,哈里什
我有一个同步功能,在后台进行一系列下载。
为此,我创建了一个具有后台配置的 URLSession 实例,如下所示:
let config = URLSessionConfiguration.background(withIdentifier: "BackgroundSessionDL")
config.httpMaximumConnectionsPerHost = 20
self.session = URLSession(configuration: config, delegate: self, delegateQueue: nil)
Run Code Online (Sandbox Code Playgroud)
每个下载任务(可能有数百个)添加如下:
var request = URLRequest(url: url)
request.addValue("Bearer \(accessToken)", forHTTPHeaderField: "Authorization")
let downloadTask = self.session.downloadTask(with: request)
downloadTask.resume()
Run Code Online (Sandbox Code Playgroud)
此代码在 iOS 12 或更早版本上完美运行 - 即使已添加的任务在后台继续下载。但是,对于 iOS 13,会导致如下问题:
我试图搜索 Apple 是否为 iOS 13 上的后台任务下载引入了任何新类/框架,但没有找到任何相关信息。此外,在早期版本中用于表示后台下载任务的类在 iOS 13 中仍然没有被弃用,并且是在 iOS 13 上搜索后台下载时的唯一结果。同样,用于 HTTP 会话的后台配置仍然不是已弃用。所以,我相信目前的后台下载实现是苹果推荐的。(根据我的理解,“BGTaskScheduler”不是为此而设计的,如有错误,请纠正我)。
那么,这是由于 iOS 13 中任何新引入的错误造成的吗?或者 Apple 预计此实现的任何更改(特定于 iOS 13)?
编辑:
我已经添加了handleEventsForBackgroundURLSession回调。发现在iOS 13的设置中没有打印相应的日志并且应用程序大小没有增加。因此,看起来下载没有在后台继续并且与没有调用下载相关的回调无关。
我正在使用 Objective-C 开发一个 iOS 项目。我需要在其中集成一些 Swift 文件。所以,做了以下事情:
MyProject-Bridging-Header.h是由我的 Xcode IDE(版本 9.1)添加的。Defines Module为 YES。MyProject-swift.h设置“Objective-C Generated Interface Header Name”的文件名。myProject-swift.h在我的 Objective-C .m 文件之一中添加了 import 语句,并且能够成功构建项目。myProject-swift.h创建的Finder 。尽管如此,当我尝试使用任何 Swift 类时,我还是会收到编译时错误“未声明标识符的用户”。
问题的原因是什么?我错过了什么吗?