Update to Swift 5

This commit is contained in:
Sami Samhuri 2022-02-16 23:22:46 -08:00
parent 8b288e8107
commit 5537aaa9bc
No known key found for this signature in database
GPG key ID: 4B4195422742FC16
7 changed files with 27 additions and 21 deletions

View file

@ -345,6 +345,7 @@
551B9BDC1AEB1C9700302388 = {
CreatedOnToolsVersion = 6.3;
DevelopmentTeam = X45WPY5JFZ;
LastSwiftMigration = 1320;
SystemCapabilities = {
com.apple.iCloud = {
enabled = 1;
@ -581,7 +582,7 @@
PRODUCT_BUNDLE_IDENTIFIER = "net.samhuri.apple-samplecode.Earthquakes";
PRODUCT_NAME = Earthquakes;
PROVISIONING_PROFILE = "";
SWIFT_VERSION = 4.0;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
@ -599,7 +600,7 @@
PRODUCT_BUNDLE_IDENTIFIER = "net.samhuri.apple-samplecode.Earthquakes";
PRODUCT_NAME = Earthquakes;
PROVISIONING_PROFILE = "";
SWIFT_VERSION = 4.0;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Release;

View file

@ -52,7 +52,7 @@ class AlertOperation: EarthquakeOperation {
addCondition(condition: MutuallyExclusive<UIViewController>())
}
func addAction(title: String, style: UIAlertActionStyle = .default, handler: @escaping (AlertOperation) -> Void = { _ in }) {
func addAction(title: String, style: UIAlertAction.Style = .default, handler: @escaping (AlertOperation) -> Void = { _ in }) {
let action = UIAlertAction(title: title, style: style) { [weak self] _ in
if let strongSelf = self {
handler(strongSelf)

View file

@ -18,16 +18,16 @@ import UIKit
class BackgroundObserver: NSObject, OperationObserver {
// MARK: Properties
private var identifier = UIBackgroundTaskInvalid
private var identifier = UIBackgroundTaskIdentifier.invalid
private var isInBackground = false
override init() {
super.init()
// We need to know when the application moves to/from the background.
NotificationCenter.default.addObserver(self, selector: #selector(BackgroundObserver.didEnterBackground(notification:)), name: NSNotification.Name.UIApplicationDidEnterBackground, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(BackgroundObserver.didEnterBackground(notification:)), name: UIApplication.didEnterBackgroundNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(BackgroundObserver.didEnterForeground(notification:)), name: NSNotification.Name.UIApplicationDidBecomeActive, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(BackgroundObserver.didEnterForeground(notification:)), name: UIApplication.didBecomeActiveNotification, object: nil)
isInBackground = UIApplication.shared.applicationState == .background
@ -56,7 +56,7 @@ class BackgroundObserver: NSObject, OperationObserver {
}
private func startBackgroundTask() {
if identifier == UIBackgroundTaskInvalid {
if identifier == UIBackgroundTaskIdentifier.invalid {
identifier = UIApplication.shared.beginBackgroundTask(withName: "BackgroundObserver", expirationHandler: {
self.endBackgroundTask()
})
@ -64,9 +64,9 @@ class BackgroundObserver: NSObject, OperationObserver {
}
private func endBackgroundTask() {
if identifier != UIBackgroundTaskInvalid {
UIApplication.shared.endBackgroundTask(identifier)
identifier = UIBackgroundTaskInvalid
if identifier != UIBackgroundTaskIdentifier.invalid {
UIApplication.shared.endBackgroundTask(convertToUIBackgroundTaskIdentifier(identifier.rawValue))
identifier = UIBackgroundTaskIdentifier.invalid
}
}
@ -80,3 +80,8 @@ class BackgroundObserver: NSObject, OperationObserver {
endBackgroundTask()
}
}
// Helper function inserted by Swift 4.2 migrator.
fileprivate func convertToUIBackgroundTaskIdentifier(_ input: Int) -> UIBackgroundTaskIdentifier {
return UIBackgroundTaskIdentifier(rawValue: input)
}

View file

@ -24,7 +24,7 @@ extension CKContainer {
operation fails. If the verification was successful, this value will
be `nil`.
*/
func verifyPermission(permission: CKApplicationPermissions, requestingIfNecessary shouldRequest: Bool = false, completion: @escaping (Error?) -> Void) {
func verifyPermission(permission: CKContainer.ApplicationPermissions, requestingIfNecessary shouldRequest: Bool = false, completion: @escaping (Error?) -> Void) {
verifyAccountStatus(container: self, permission: permission, shouldRequest: shouldRequest, completion: completion)
}
}
@ -33,7 +33,7 @@ extension CKContainer {
Make these helper functions instead of helper methods, so we don't pollute
`CKContainer`.
*/
private func verifyAccountStatus(container: CKContainer, permission: CKApplicationPermissions, shouldRequest: Bool, completion: @escaping (Error?) -> Void) {
private func verifyAccountStatus(container: CKContainer, permission: CKContainer.ApplicationPermissions, shouldRequest: Bool, completion: @escaping (Error?) -> Void) {
container.accountStatus { accountStatus, accountError in
if accountStatus == .available {
if permission != [] {
@ -50,7 +50,7 @@ private func verifyAccountStatus(container: CKContainer, permission: CKApplicati
}
}
private func verifyPermission(container: CKContainer, permission: CKApplicationPermissions, shouldRequest: Bool, completion: @escaping (Error?) -> Void) {
private func verifyPermission(container: CKContainer, permission: CKContainer.ApplicationPermissions, shouldRequest: Bool, completion: @escaping (Error?) -> Void) {
container.status(forApplicationPermission: permission) { permissionStatus, permissionError in
if permissionStatus == .granted {
completion(nil)
@ -65,7 +65,7 @@ private func verifyPermission(container: CKContainer, permission: CKApplicationP
}
}
private func requestPermission(container: CKContainer, permission: CKApplicationPermissions, completion: @escaping (Error?) -> Void) {
private func requestPermission(container: CKContainer, permission: CKContainer.ApplicationPermissions, completion: @escaping (Error?) -> Void) {
DispatchQueue.main.async {
container.requestApplicationPermission(permission) { requestStatus, requestError in
if requestStatus == .granted {

View file

@ -23,7 +23,7 @@ struct CloudContainerCondition: OperationCondition {
let container: CKContainer // this is the container to which you need access.
let permission: CKApplicationPermissions
let permission: CKContainer.ApplicationPermissions
/**
- parameter container: the `CKContainer` to which you need access.
@ -31,7 +31,7 @@ struct CloudContainerCondition: OperationCondition {
container. This parameter has a default value of `[]`, which would get
you anonymized read/write access.
*/
init(container: CKContainer, permission: CKApplicationPermissions = []) {
init(container: CKContainer, permission: CKContainer.ApplicationPermissions = []) {
self.container = container
self.permission = permission
}
@ -64,9 +64,9 @@ struct CloudContainerCondition: OperationCondition {
*/
private class CloudKitPermissionOperation: EarthquakeOperation {
let container: CKContainer
let permission: CKApplicationPermissions
let permission: CKContainer.ApplicationPermissions
init(container: CKContainer, permission: CKApplicationPermissions) {
init(container: CKContainer, permission: CKContainer.ApplicationPermissions) {
self.container = container
self.permission = permission
super.init()

View file

@ -36,7 +36,7 @@ struct LocationCondition: OperationCondition {
func evaluateForOperation(operation: EarthquakeOperation, completion: (OperationConditionResult) -> Void) {
let enabled = CLLocationManager.locationServicesEnabled()
let actual = CLLocationManager.authorizationStatus()
let actual = CLLocationManager().authorizationStatus
var error: NSError?
@ -101,7 +101,7 @@ private class LocationPermissionOperation: EarthquakeOperation {
Not only do we need to handle the "Not Determined" case, but we also
need to handle the "upgrade" (.WhenInUse -> .Always) case.
*/
switch (CLLocationManager.authorizationStatus(), usage) {
switch (CLLocationManager().authorizationStatus, usage) {
case (.notDetermined, _), (.authorizedWhenInUse, .Always):
DispatchQueue.main.async {
self.requestPermission()

View file

@ -14,7 +14,7 @@ class SplitViewController: UISplitViewController {
override func awakeFromNib() {
super.awakeFromNib()
preferredDisplayMode = .allVisible
preferredDisplayMode = .oneBesideSecondary
delegate = self
}