@@ -54,64 +54,37 @@ public extension Foundation.UserDefaults {
5454 return nil
5555 }
5656
57- // MARK: CGRect,CGSize,CGPoint
58- #if os(OSX)
59- private func NSStringFromCGRect( _ value: CGRect ) -> String {
60- return NSStringFromRect ( NSRectFromCGRect ( value) )
61- }
62-
63- private func NSStringFromCGSize( _ value: CGSize ) -> String {
64- return NSStringFromSize ( NSSizeFromCGSize ( value) )
65- }
66-
67- private func NSStringFromCGPoint( _ value: CGPoint ) -> String {
68- return NSStringFromPoint ( NSPointFromCGPoint ( value) )
69- }
70-
71- private func CGRectFromString( _ value: String ) -> CGRect {
72- return NSRectToCGRect ( NSRectFromString ( value) )
73- }
74-
75- private func CGSizeFromString( _ value: String ) -> CGSize {
76- return NSSizeToCGSize ( NSSizeFromString ( value) )
77- }
78-
79- private func CGPointFromString( _ value: String ) -> CGPoint {
80- return NSPointToCGPoint ( NSPointFromString ( value) )
81- }
82- #endif
83-
8457 public func cgRect( forKey key: PreferenceKey ) -> CGRect ? {
8558 if let string = self . string ( forKey: key) {
86- return CGRectFromString ( string)
59+ return NSCoder . cgRect ( for : string)
8760 }
8861 return nil
8962 }
9063
9164 @nonobjc public func set( _ value: CGRect , forKey key: PreferenceKey ) {
92- self . set ( NSStringFromCGRect ( value) , forKey: key)
65+ self . set ( NSCoder . string ( for : value) , forKey: key)
9366 }
9467
9568 public func cgSize( forKey key: PreferenceKey ) -> CGSize ? {
9669 if let string = self . string ( forKey: key) {
97- return CGSizeFromString ( string)
70+ return NSCoder . cgSize ( for : string)
9871 }
9972 return nil
10073 }
10174
10275 @nonobjc public func set( _ value: CGSize , forKey key: PreferenceKey ) {
103- self . set ( NSStringFromCGSize ( value) , forKey: key)
76+ self . set ( NSCoder . string ( for : value) , forKey: key)
10477 }
10578
10679 public func cgPoint( forKey key: PreferenceKey ) -> CGPoint ? {
10780 if let string = self . string ( forKey: key) {
108- return CGPointFromString ( string)
81+ return NSCoder . cgPoint ( for : string)
10982 }
11083 return nil
11184 }
11285
11386 @nonobjc public func set( _ value: CGPoint , forKey key: PreferenceKey ) {
114- self . set ( NSStringFromCGPoint ( value) , forKey: key)
87+ self . set ( NSCoder . string ( for : value) , forKey: key)
11588 }
11689
11790 #if os(OSX)
@@ -126,7 +99,7 @@ public extension Foundation.UserDefaults {
12699 // MARK: NSSize
127100 public func nsSizeForKey( key: String ) -> NSSize ? {
128101 if let string = self . string ( forKey: key) {
129- return NSSizeFromString ( string)
102+ return NSCoder . cgSize ( for : string)
130103 }
131104 return nil
132105 }
@@ -138,12 +111,58 @@ public extension Foundation.UserDefaults {
138111public var UserDefaultsKeySeparator = " . "
139112
140113#if os(OSX)
141- import AppKit
142- public var UserDefaultsController = NSUserDefaultsController . shared
114+ import AppKit
115+ public var UserDefaultsController = NSUserDefaultsController . shared
116+
117+ // http://stackoverflow.com/questions/29312106/xcode-6-os-x-storyboard-multiple-user-defaults-controllers-bug-with-multiple-sce/29509031#29509031
118+ @objc ( SharedUserDefaultsControllerProxy)
119+ public class SharedUserDefaultsControllerProxy : NSObject {
120+ lazy var defaults = UserDefaultsController
121+ }
143122
144- // http://stackoverflow.com/questions/29312106/xcode-6-os-x-storyboard-multiple-user-defaults-controllers-bug-with-multiple-sce/29509031#29509031
145- @objc ( SharedUserDefaultsControllerProxy)
146- public class SharedUserDefaultsControllerProxy : NSObject {
147- lazy var defaults = UserDefaultsController
123+ extension NSCoder {
124+ static func cgRect( for string: String ) -> CGRect {
125+ return NSRectToCGRect ( NSRectFromString ( string) )
148126 }
127+ static func cgSize( for string: String ) -> CGSize {
128+ return NSSizeToCGSize ( NSSizeFromString ( string) )
129+ }
130+ static func cgPoint( for string: String ) -> CGPoint {
131+ return NSPointToCGPoint ( NSPointFromString ( string) )
132+ }
133+ static func string( for value: CGRect ) -> String {
134+ return NSStringFromRect ( NSRectFromCGRect ( value) )
135+ }
136+ static func string( for value: CGSize ) -> String {
137+ return NSStringFromSize ( NSSizeFromCGSize ( value) )
138+ }
139+ static func string( for value: CGPoint ) -> String {
140+ return NSStringFromPoint ( NSPointFromCGPoint ( value) )
141+ }
142+ }
143+ #else
144+
145+ #if swift(>=4.2)
146+ #else
147+ extension NSCoder {
148+ static func cgRect( for string: String ) -> CGRect {
149+ return CGRectFromString ( string)
150+ }
151+ static func cgSize( for string: String ) -> CGSize {
152+ return CGSizeFromString ( string) )
153+ }
154+ static func cgPoint( for string: String ) -> CGPoint {
155+ return CGPointFromString ( string)
156+ }
157+ static func string( for value: CGRect ) -> String {
158+ return NSStringFromCGRect ( value)
159+ }
160+ static func string( for value: CGSize ) -> String {
161+ return NSStringFromCGSize ( value)
162+ }
163+ static func string( for value: CGPoint ) -> String {
164+ return NSStringFromCGPoint ( value)
165+ }
166+ }
167+ #endif
149168#endif
0 commit comments