Require macOS 10.13, iOS 12, tvOS 12, watchOS 5

Fixes #81
This commit is contained in:
Sindre Sorhus 2021-10-12 13:45:07 +07:00
parent 5f16cefebe
commit 8a6e4a96fd
4 changed files with 11 additions and 24 deletions

View File

@ -1,13 +1,13 @@
// swift-tools-version:5.4 // swift-tools-version:5.5
import PackageDescription import PackageDescription
let package = Package( let package = Package(
name: "Defaults", name: "Defaults",
platforms: [ platforms: [
.macOS(.v10_12), .macOS(.v10_13),
.iOS(.v10), .iOS(.v12),
.tvOS(.v10), .tvOS(.v12),
.watchOS(.v3) .watchOS(.v5)
], ],
products: [ products: [
.library( .library(

View File

@ -88,16 +88,7 @@ extension Defaults {
return nil return nil
} }
// Version below macOS 10.13 and iOS 11.0 does not support `archivedData(withRootObject:requiringSecureCoding:)`. return try? NSKeyedArchiver.archivedData(withRootObject: object, requiringSecureCoding: true)
// 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
}
} }
public func deserialize(_ object: Serializable?) -> Value? { public func deserialize(_ object: Serializable?) -> Value? {

View File

@ -3,7 +3,6 @@ import CoreData
import Defaults import Defaults
import XCTest 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 { private final class ExamplePersistentHistory: NSPersistentHistoryToken, Defaults.Serializable {
let value: String let value: String
@ -25,16 +24,14 @@ private final class ExamplePersistentHistory: NSPersistentHistoryToken, Defaults
} }
// NSSecureCoding // 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 { extension Defaults.Keys {
fileprivate static let persistentHistory = Key<ExamplePersistentHistory>("persistentHistory", default: persistentHistoryValue) fileprivate static let persistentHistory = Key<ExamplePersistentHistory>("persistentHistory", default: persistentHistoryValue)
fileprivate static let persistentHistoryArray = Key<[ExamplePersistentHistory]>("array_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]) 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 { final class DefaultsNSSecureCodingTests: XCTestCase {
override func setUp() { override func setUp() {
super.setUp() super.setUp()
@ -313,7 +310,6 @@ final class DefaultsNSSecureCodingTests: XCTestCase {
waitForExpectations(timeout: 10) 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() { func testObserveMultipleNSSecureKeys() {
let key1 = Defaults.Key<ExamplePersistentHistory>("observeNSSecureCodingKey1", default: ExamplePersistentHistory(value: "TestValue")) let key1 = Defaults.Key<ExamplePersistentHistory>("observeNSSecureCodingKey1", default: ExamplePersistentHistory(value: "TestValue"))
let key2 = Defaults.Key<ExamplePersistentHistory>("observeNSSecureCodingKey2", default: ExamplePersistentHistory(value: "TestValue")) let key2 = Defaults.Key<ExamplePersistentHistory>("observeNSSecureCodingKey2", default: ExamplePersistentHistory(value: "TestValue"))

View File

@ -23,10 +23,10 @@ For a real-world example, see the [Plash app](https://github.com/sindresorhus/Pl
## Compatibility ## Compatibility
- macOS 10.12+ - macOS 10.13+
- iOS 10+ - iOS 12+
- tvOS 10+ - tvOS 12+
- watchOS 3+ - watchOS 5+
<br> <br>