4
4
//
5
5
// Created by Kyle on 2024/1/5.
6
6
// Lastest Version: iOS 15.5
7
- // Status: WIP
7
+ // Status: Complete
8
8
// ID: 1B00D77CE2C80F9C0F5A59FDEA30ED6B
9
9
10
10
struct VersionSeed : CustomStringConvertible {
@@ -31,12 +31,19 @@ struct VersionSeedTracker<Key: HostPreferenceKey> {
31
31
struct VersionSeedSetTracker {
32
32
private var values : [ Value ]
33
33
34
- func addPreference< Key: HostPreferenceKey > ( _ keyType : Key . Type ) {
35
-
34
+ mutating func addPreference< Key: HostPreferenceKey > ( _: Key . Type ) {
35
+ values . append ( Value ( key : _AnyPreferenceKey < Key > . self , seed : . invalid ) )
36
36
}
37
37
38
- func updateSeeds( to: PreferenceList ) {
39
-
38
+ mutating func updateSeeds( to preferences: PreferenceList ) {
39
+ for index in values. indices {
40
+ var visitor = UpdateSeedVisitor ( preferences: preferences, seed: nil )
41
+ values [ index] . key. visitKey ( & visitor)
42
+ guard let seed = visitor. seed else {
43
+ continue
44
+ }
45
+ values [ index] . seed = seed
46
+ }
40
47
}
41
48
}
42
49
@@ -53,7 +60,7 @@ extension VersionSeedSetTracker {
53
60
var seed : VersionSeed
54
61
var matches : Bool ?
55
62
56
- mutating func visit< Key > ( key: Key . Type ) where Key : PreferenceKey {
63
+ mutating func visit( key: ( some PreferenceKey ) . Type) {
57
64
let valueSeed = preferences [ key] . seed
58
65
matches = seed. isValid && valueSeed. isValid && seed. value == valueSeed. value
59
66
}
@@ -63,7 +70,7 @@ extension VersionSeedSetTracker {
63
70
let preferences : PreferenceList
64
71
var seed : VersionSeed ?
65
72
66
- mutating func visit< Key > ( key: Key . Type ) where Key : PreferenceKey {
73
+ mutating func visit( key: ( some PreferenceKey ) . Type) {
67
74
seed = preferences [ key] . seed
68
75
}
69
76
}
0 commit comments