Skip to content

Commit

Permalink
Require macOS 10.13, iOS 12, tvOS 12, watchOS 5
Browse files Browse the repository at this point in the history
Fixes #81
  • Loading branch information
sindresorhus committed Oct 12, 2021
1 parent 5f16cef commit 8a6e4a9
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 24 deletions.
10 changes: 5 additions & 5 deletions Package.swift
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
// swift-tools-version:5.4
// swift-tools-version:5.5
import PackageDescription

let package = Package(
name: "Defaults",
platforms: [
.macOS(.v10_12),
.iOS(.v10),
.tvOS(.v10),
.watchOS(.v3)
.macOS(.v10_13),
.iOS(.v12),
.tvOS(.v12),
.watchOS(.v5)
],
products: [
.library(
Expand Down
11 changes: 1 addition & 10 deletions Sources/Defaults/Defaults+Bridge.swift
Original file line number Diff line number Diff line change
Expand Up @@ -88,16 +88,7 @@ extension Defaults {
return nil
}

// Version below macOS 10.13 and iOS 11.0 does not support `archivedData(withRootObject:requiringSecureCoding:)`.
// We need to set `requiresSecureCoding` ourselves.
if #available(iOS 11.0, macOS 10.13, tvOS 11.0, watchOS 4.0, iOSApplicationExtension 11.0, macOSApplicationExtension 10.13, tvOSApplicationExtension 11.0, watchOSApplicationExtension 4.0, *) {
return try? NSKeyedArchiver.archivedData(withRootObject: object, requiringSecureCoding: true)
} else {
let keyedArchiver = NSKeyedArchiver()
keyedArchiver.requiresSecureCoding = true
keyedArchiver.encode(object, forKey: NSKeyedArchiveRootObjectKey)
return keyedArchiver.encodedData
}
return try? NSKeyedArchiver.archivedData(withRootObject: object, requiringSecureCoding: true)
}

public func deserialize(_ object: Serializable?) -> Value? {
Expand Down
6 changes: 1 addition & 5 deletions Tests/DefaultsTests/DefaultsNSSecureCodingTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import CoreData
import Defaults
import XCTest

@available(iOS 11.0, macOS 10.13, tvOS 11.0, watchOS 4.0, iOSApplicationExtension 11.0, macOSApplicationExtension 10.13, tvOSApplicationExtension 11.0, watchOSApplicationExtension 4.0, *)
private final class ExamplePersistentHistory: NSPersistentHistoryToken, Defaults.Serializable {
let value: String

Expand All @@ -25,16 +24,14 @@ private final class ExamplePersistentHistory: NSPersistentHistoryToken, Defaults
}

// NSSecureCoding
@available(iOS 11.0, macOS 10.13, tvOS 11.0, watchOS 4.0, iOSApplicationExtension 11.0, macOSApplicationExtension 10.13, tvOSApplicationExtension 11.0, watchOSApplicationExtension 4.0, *) private let persistentHistoryValue = ExamplePersistentHistory(value: "ExampleToken")
private let persistentHistoryValue = ExamplePersistentHistory(value: "ExampleToken")

@available(iOS 11.0, macOS 10.13, tvOS 11.0, watchOS 4.0, iOSApplicationExtension 11.0, macOSApplicationExtension 10.13, tvOSApplicationExtension 11.0, watchOSApplicationExtension 4.0, *)
extension Defaults.Keys {
fileprivate static let persistentHistory = Key<ExamplePersistentHistory>("persistentHistory", default: persistentHistoryValue)
fileprivate static let persistentHistoryArray = Key<[ExamplePersistentHistory]>("array_persistentHistory", default: [persistentHistoryValue])
fileprivate static let persistentHistoryDictionary = Key<[String: ExamplePersistentHistory]>("dictionary_persistentHistory", default: ["0": persistentHistoryValue])
}

@available(iOS 11.0, macOS 10.13, tvOS 11.0, watchOS 4.0, iOSApplicationExtension 11.0, macOSApplicationExtension 10.13, tvOSApplicationExtension 11.0, watchOSApplicationExtension 4.0, *)
final class DefaultsNSSecureCodingTests: XCTestCase {
override func setUp() {
super.setUp()
Expand Down Expand Up @@ -313,7 +310,6 @@ final class DefaultsNSSecureCodingTests: XCTestCase {
waitForExpectations(timeout: 10)
}

@available(iOS 11.0, macOS 10.13, tvOS 11.0, watchOS 4.0, iOSApplicationExtension 11.0, macOSApplicationExtension 10.13, tvOSApplicationExtension 11.0, watchOSApplicationExtension 4.0, *)
func testObserveMultipleNSSecureKeys() {
let key1 = Defaults.Key<ExamplePersistentHistory>("observeNSSecureCodingKey1", default: ExamplePersistentHistory(value: "TestValue"))
let key2 = Defaults.Key<ExamplePersistentHistory>("observeNSSecureCodingKey2", default: ExamplePersistentHistory(value: "TestValue"))
Expand Down
8 changes: 4 additions & 4 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,10 @@ For a real-world example, see the [Plash app](https://github.com/sindresorhus/Pl

## Compatibility

- macOS 10.12+
- iOS 10+
- tvOS 10+
- watchOS 3+
- macOS 10.13+
- iOS 12+
- tvOS 12+
- watchOS 5+

<br>

Expand Down

0 comments on commit 8a6e4a9

Please sign in to comment.