1
1
import Cocoa
2
2
import Defaults
3
3
4
+ class Dream : NSObject {
5
+ @objc dynamic var name : String
6
+ init ( name : String ) {
7
+ self . name = name
8
+ }
9
+ }
10
+
4
11
extension Defaults . Keys {
5
12
static let dreams = Defaults . Key< Array< String>>( " dreams " , default: [
6
13
" Hit the gym " ,
@@ -12,13 +19,15 @@ extension Defaults.Keys {
12
19
}
13
20
14
21
class ViewController : NSViewController , NSTableViewDataSource , NSTableViewDelegate {
15
- var dreams = defaults [ . dreams]
22
+ var dreamNames = defaults [ . dreams]
23
+ var dreams = [ Dream] ( )
16
24
@objc dynamic var selectedIndexes = IndexSet ( )
17
25
18
26
@IBOutlet weak var table : NSTableView !
19
27
20
28
override func viewDidLoad( ) {
21
29
super. viewDidLoad ( )
30
+ dreams = dreamNames. map { Dream ( name: $0) }
22
31
}
23
32
24
33
override var acceptsFirstResponder : Bool {
@@ -41,7 +50,7 @@ class ViewController: NSViewController, NSTableViewDataSource, NSTableViewDelega
41
50
42
51
func addNewDream( ) {
43
52
let last = dreams. count
44
- dreams. append ( " " )
53
+ dreams. append ( Dream ( name : " " ) )
45
54
table. insertRows ( at: IndexSet ( integer: last) , withAnimation: . effectGap)
46
55
table. scrollRowToVisible ( last)
47
56
table. selectRowIndexes ( [ last] , byExtendingSelection: false )
@@ -61,10 +70,10 @@ class ViewController: NSViewController, NSTableViewDataSource, NSTableViewDelega
61
70
saveDreams ( )
62
71
}
63
72
64
- override func controlTextDidChange ( _ obj: Notification ) {
73
+ override func controlTextDidEndEditing ( _ obj: Notification ) {
65
74
saveDreams ( )
66
75
}
67
-
76
+
68
77
@IBAction func addTableRow( _ sender: Any ) {
69
78
addNewDream ( )
70
79
}
@@ -74,7 +83,7 @@ class ViewController: NSViewController, NSTableViewDataSource, NSTableViewDelega
74
83
}
75
84
76
85
func saveDreams( ) {
77
- defaults [ . dreams] = dreams
86
+ defaults [ . dreams] = dreams. map ( { $0 . name } )
78
87
}
79
88
}
80
89
0 commit comments