Skip to content

Commit a971db3

Browse files
committed
Do not set the attributeValueClassName
Gives issues w/ optional base types when nil is set (converted to `NSNull` which then doesn't match an internal preconditions).
1 parent 7bab02e commit a971db3

File tree

2 files changed

+21
-17
lines changed

2 files changed

+21
-17
lines changed

Sources/ManagedModels/SchemaCompatibility/CoreDataPrimitiveValue.swift

+15-15
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ public extension CoreData.NSAttributeDescription {
99
struct TypeConfiguration {
1010
let attributeType : NSAttributeType
1111
let isOptional : Bool
12-
let attributeValueClassName : String
12+
let attributeValueClassName : String?
1313
}
1414
}
1515

@@ -37,35 +37,35 @@ extension Int: CoreDataPrimitiveValue {
3737
public static let coreDataValue = NSAttributeDescription.TypeConfiguration(
3838
attributeType : .integer64AttributeType,
3939
isOptional : false,
40-
attributeValueClassName : "NSNumber"
40+
attributeValueClassName : nil
4141
)
4242
}
4343
extension Int16: CoreDataPrimitiveValue {
4444
public static let coreDataValue = NSAttributeDescription.TypeConfiguration(
4545
attributeType : .integer16AttributeType,
4646
isOptional : false,
47-
attributeValueClassName : "NSNumber"
47+
attributeValueClassName : nil
4848
)
4949
}
5050
extension Int32: CoreDataPrimitiveValue {
5151
public static let coreDataValue = NSAttributeDescription.TypeConfiguration(
5252
attributeType : .integer32AttributeType,
5353
isOptional : false,
54-
attributeValueClassName : "NSNumber"
54+
attributeValueClassName : nil
5555
)
5656
}
5757
extension Int64: CoreDataPrimitiveValue {
5858
public static let coreDataValue = NSAttributeDescription.TypeConfiguration(
5959
attributeType : .integer64AttributeType,
6060
isOptional : false,
61-
attributeValueClassName : "NSNumber"
61+
attributeValueClassName : nil
6262
)
6363
}
6464
extension Int8: CoreDataPrimitiveValue {
6565
public static let coreDataValue = NSAttributeDescription.TypeConfiguration(
6666
attributeType : .integer16AttributeType,
6767
isOptional : false,
68-
attributeValueClassName : "NSNumber"
68+
attributeValueClassName : nil
6969
)
7070
}
7171

@@ -91,30 +91,30 @@ extension String: CoreDataPrimitiveValue {
9191
public static let coreDataValue = NSAttributeDescription.TypeConfiguration(
9292
attributeType : .stringAttributeType,
9393
isOptional : false,
94-
attributeValueClassName : "NSString"
94+
attributeValueClassName : nil
9595
)
9696
}
9797

9898
extension Bool: CoreDataPrimitiveValue {
9999
public static let coreDataValue = NSAttributeDescription.TypeConfiguration(
100100
attributeType : .booleanAttributeType,
101101
isOptional : false,
102-
attributeValueClassName : "NSNumber"
102+
attributeValueClassName : nil
103103
)
104104
}
105105

106106
extension Double: CoreDataPrimitiveValue {
107107
public static let coreDataValue = NSAttributeDescription.TypeConfiguration(
108108
attributeType : .doubleAttributeType,
109109
isOptional : false,
110-
attributeValueClassName : "NSNumber"
110+
attributeValueClassName : nil
111111
)
112112
}
113113
extension Float: CoreDataPrimitiveValue {
114114
public static let coreDataValue = NSAttributeDescription.TypeConfiguration(
115115
attributeType : .floatAttributeType,
116116
isOptional : false,
117-
attributeValueClassName : "NSNumber"
117+
attributeValueClassName : nil
118118
)
119119
}
120120

@@ -124,38 +124,38 @@ extension Date: CoreDataPrimitiveValue {
124124
public static let coreDataValue = NSAttributeDescription.TypeConfiguration(
125125
attributeType : .dateAttributeType,
126126
isOptional : false,
127-
attributeValueClassName : "NSDate"
127+
attributeValueClassName : nil
128128
)
129129
}
130130

131131
extension Data: CoreDataPrimitiveValue {
132132
public static let coreDataValue = NSAttributeDescription.TypeConfiguration(
133133
attributeType : .binaryDataAttributeType,
134134
isOptional : false,
135-
attributeValueClassName : "NSDate"
135+
attributeValueClassName : nil
136136
)
137137
}
138138

139139
extension Decimal: CoreDataPrimitiveValue {
140140
public static let coreDataValue = NSAttributeDescription.TypeConfiguration(
141141
attributeType : .decimalAttributeType,
142142
isOptional : false,
143-
attributeValueClassName : "NSDecimalNumber"
143+
attributeValueClassName : nil
144144
)
145145
}
146146

147147
extension UUID: CoreDataPrimitiveValue {
148148
public static let coreDataValue = NSAttributeDescription.TypeConfiguration(
149149
attributeType : .UUIDAttributeType,
150150
isOptional : false,
151-
attributeValueClassName : "NSUUID"
151+
attributeValueClassName : nil
152152
)
153153
}
154154

155155
extension URL: CoreDataPrimitiveValue {
156156
public static let coreDataValue = NSAttributeDescription.TypeConfiguration(
157157
attributeType : .URIAttributeType,
158158
isOptional : false,
159-
attributeValueClassName : "NSURL"
159+
attributeValueClassName : nil
160160
)
161161
}

Sources/ManagedModels/SchemaCompatibility/NSAttributeDescription+Data.swift

+6-2
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,9 @@ extension CoreData.NSAttributeDescription: SchemaProperty {
4242
let config = primitiveType.coreDataValue
4343
self.attributeType = config.attributeType
4444
self.isOptional = config.isOptional
45-
self.attributeValueClassName = config.attributeValueClassName
45+
if let newClassName = config.attributeValueClassName {
46+
self.attributeValueClassName = newClassName
47+
}
4648
return
4749
}
4850

@@ -55,7 +57,9 @@ extension CoreData.NSAttributeDescription: SchemaProperty {
5557
let config = primitiveType.coreDataValue
5658
self.attributeType = config.attributeType
5759
self.isOptional = config.isOptional
58-
self.attributeValueClassName = config.attributeValueClassName
60+
if let newClassName = config.attributeValueClassName {
61+
self.attributeValueClassName = newClassName
62+
}
5963
return true
6064
}
6165
else {

0 commit comments

Comments
 (0)