gonzalezreal / Groot

From JSON to Core Data and back.
Other
534 stars 61 forks source link

Groot cannot parse #76

Closed zhangjianxing closed 7 years ago

zhangjianxing commented 7 years ago

for a very easy code:

    let data: JSONDictionary = [
        "enrollment_capacity": 10,
        "enrollment_total": 5,
        "section": "sec1"
        ]

    do {
        let eg: UWFetchedData = try object(withEntityName: "UWFetchedData", fromJSONDictionary: data, inContext: self.context) as! UWFetchedData

        print( "\(eg.section) \(eg.enrollment_capacity) / \(eg.enrollment_total)" )

    } catch {}

it prints "nil 0 / 0"

UWFetchedData are shown as this: the first two fields are integer, the last one is string

uwfetcheddata

During the time it parse JSONDictionary, it prints error:

2016-12-12 00:45:51.531977 reflash-uw-course[87237:2702331] [error] error: -addPersistentStoreWithType:SQLite configuration:(null) URL:file:///Users/jianxingzhang/Library/Developer/CoreSimulator/Devices/502A214A-B536-4863-A62C-0AB185CF9C07/data/Containers/Data/Application/DA5B5DDA-1551-488E-88F2-D0B00A804875/Library/Application%20Support/reflash_uw_course.sqlite options:{ NSInferMappingModelAutomaticallyOption = 1; NSMigratePersistentStoresAutomaticallyOption = 1; } ... returned error Error Domain=NSCocoaErrorDomain Code=134140 "(null)" UserInfo={sourceModel=(<NSManagedObjectModel: 0x600000085960>) isEditable 1, entities { UWCourse = "(<NSEntityDescription: 0x600000145f90>) name UWCourse, managedObjectClassName NSManagedObject, renamingIdentifier UWCourse, isAbstract 0, superentity name (null), properties {\n catalogNumber = \"(<NSAttributeDescription: 0x618000108b80>), name catalogNumber, isOptional 0, isTransient 0, entity UWCourse, renamingIdentifier catalogNumber, validation predicates (\n), warnings (\n), versionHashModifier (null)\n userInfo {\n}, attributeType 700 , attributeValueClassName NSString, defaultValue 1171\";\n hasFetchedData = \"(<NSAttributeDescription: 0x600000108dc0>), name hasFetchedData, isOptional 1, isTransient 0, entity UWCourse, renamingIdentifier hasFetchedData, validation predicates (\n), warnings (\n), versionHashModifier (null)\n userInfo {\n}, attributeType 800 , attributeValueClassName NSNumber, defaultValue (null)\";\n newRelationship = \"(<NSRelationshipDescription: 0x600000146880>), name newRelationship, isOptional 1, isTransient 0, entity UWCourse, renamingIdentifier newRelationship, validation predicates (\n), warnings (\n), versionHashModifier (null)\n userInfo {\n}, destination entity UWFetchedData, inverseRelationship newRelationship, minCount 0, maxCount 0, isOrdered 0, deleteRule 1\";\n subject = \"(<NSAttributeDescription: 0x600000108e50>), name subject, isOptional 0, isTransient 0, entity UWCourse, renamingIdentifier subject, validation predicates (\n), warnings (\n), versionHashModifier (null)\n userInfo {\n}, attributeType 700 , attributeValueClassName NSString, defaultValue cs\";\n term = \"(<NSAttributeDescription: 0x600000108ca0>), name term, isOptional 0, isTransient 0, entity UWCourse, renamingIdentifier term, validation predicates (\n), warnings (\n), versionHashModifier (null)\n userInfo {\n}, attributeType 700 , attributeValueClassName NSString, defaultValue 489\";\n}, subentities {\n}, userInfo {\n}, versionHashModifier (null), uniquenessConstraints (\n)"; UWFetchedData = "(<NSEntityDescription: 0x600000146f60>) name UWFetchedData, managedObjectClassName NSManagedObject, renamingIdentifier UWFetchedData, isAbstract 0, superentity name (null), properties {\n \"enrollment_capacity\" = \"(<NSAttributeDescription: 0x6100001080d0>), name enrollment_capacity, isOptional 1, isTransient 0, entity UWFetchedData, renamingIdentifier enrollment_capacity, validation predicates (\n), warnings (\n), versionHashModifier (null)\n userInfo {\n}, attributeType 700 , attributeValueClassName NSString, defaultValue (null)\";\n \"enrollment_total\" = \"(<NSAttributeDescription: 0x610000108550>), name enrollment_total, isOptional 0, isTransient 0, entity UWFetchedData, renamingIdentifier enrollment_total, validation predicates (\n), warnings (\n), versionHashModifier (null)\n userInfo {\n}, attributeType 200 , attributeValueClassName NSNumber, defaultValue 0\";\n newRelationship = \"(<NSRelationshipDescription: 0x6100001465c0>), name newRelationship, isOptional 1, isTransient 0, entity UWFetchedData, renamingIdentifier newRelationship, validation predicates (\n), warnings (\n), versionHashModifier (null)\n userInfo {\n}, destination entity UWCourse, inverseRelationship newRelationship, minCount 0, maxCount 1, isOrdered 0, deleteRule 1\";\n section = \"(<NSAttributeDescription: 0x610000108430>), name section, isOptional 1, isTransient 0, entity UWFetchedData, renamingIdentifier section, validation predicates (\n), warnings (\n), versionHashModifier (null)\n userInfo {\n}, attributeType 700 , attributeValueClassName NSString, defaultValue (null)\";\n}, subentities {\n}, userInfo {\n}, versionHashModifier (null), uniquenessConstraints (\n)"; }, fetch request templates { }, destinationModel=(<NSManagedObjectModel: 0x618000082c10>) isEditable 0, entities { UWCourse = "(<NSEntityDescription: 0x6080001467d0>) name UWCourse, managedObjectClassName UWCourse, renamingIdentifier UWCourse, isAbstract 0, superentity name (null), properties {\n catalogNumber = \"(<NSAttributeDescription: 0x618000106ff0>), name catalogNumber, isOptional 0, isTransient 0, entity UWCourse, renamingIdentifier catalogNumber, validation predicates (\n), warnings (\n), versionHashModifier (null)\n userInfo {\n}, attributeType 700 , attributeValueClassName NSString, defaultValue 1171\";\n hasFetchedData = \"(<NSAttributeDescription: 0x6180001078f0>), name hasFetchedData, isOptional 1, isTransient 0, entity UWCourse, renamingIdentifier hasFetchedData, validation predicates (\n), warnings (\n), versionHashModifier (null)\n userInfo {\n}, attributeType 800 , attributeValueClassName NSNumber, defaultValue (null)\";\n subject = \"(<NSAttributeDescription: 0x6180001073e0>), name subject, isOptional 0, isTransient 0, entity UWCourse, renamingIdentifier subject, validation predicates (\n), warnings (\n), versionHashModifier (null)\n userInfo {\n}, attributeType 700 , attributeValueClassName NSString, defaultValue cs\";\n term = \"(<NSAttributeDescription: 0x618000107e00>), name term, isOptional 0, isTransient 0, entity UWCourse, renamingIdentifier term, validation predicates (\n), warnings (\n), versionHashModifier (null)\n userInfo {\n}, attributeType 700 , attributeValueClassName NSString, defaultValue 489\";\n}, subentities {\n}, userInfo {\n}, versionHashModifier (null), uniquenessConstraints (\n)"; UWFetchedData = "(<NSEntityDescription: 0x608000146930>) name UWFetchedData, managedObjectClassName UWFetchedData, renamingIdentifier UWFetchedData, isAbstract 0, superentity name (null), properties {\n \"enrollment_capacity\" = \"(<NSAttributeDescription: 0x618000106e40>), name enrollment_capacity, isOptional 1, isTransient 0, entity UWFetchedData, renamingIdentifier enrollment_capacity, validation predicates (\n), warnings (\n), versionHashModifier (null)\n userInfo {\n}, attributeType 300 , attributeValueClassName NSNumber, defaultValue 0\";\n \"enrollment_total\" = \"(<NSAttributeDescription: 0x618000106f60>), name enrollment_total, isOptional 0, isTransient 0, entity UWFetchedData, renamingIdentifier enrollment_total, validation predicates (\n), warnings (\n), versionHashModifier (null)\n userInfo {\n}, attributeType 300 , attributeValueClassName NSNumber, defaultValue 0\";\n section = \"(<NSAttributeDescription: 0x618000106d20>), name section, isOptional 1, isTransient 0, entity UWFetchedData, renamingIdentifier section, validation predicates (\n), warnings (\n), versionHashModifier (null)\n userInfo {\n}, attributeType 700 , attributeValueClassName NSString, defaultValue (null)\";\n}, subentities {\n}, userInfo {\n}, versionHashModifier (null), uniquenessConstraints (\n)"; }, fetch request templates { }, reason=Can't find or automatically infer mapping model for migration, NSUnderlyingError=0x618000055c00 {Error Domain=NSCocoaErrorDomain Code=134190 "(null)" UserInfo={entity=UWFetchedData, property=enrollment_capacity, reason=Source and destination attribute types are incompatible}}} with userInfo dictionary { NSUnderlyingError = "Error Domain=NSCocoaErrorDomain Code=134190 \"(null)\" UserInfo={entity=UWFetchedData, property=enrollment_capacity, reason=Source and destination attribute types are incompatible}"; destinationModel = "(<NSManagedObjectModel: 0x618000082c10>) isEditable 0, entities {\n UWCourse = \"(<NSEntityDescription: 0x6080001467d0>) name UWCourse, managedObjectClassName UWCourse, renamingIdentifier UWCourse, isAbstract 0, superentity name (null), properties {\n catalogNumber = \\"(<NSAttributeDescription: 0x618000106ff0>), name catalogNumber, isOptional 0, isTransient 0, entity UWCourse, renamingIdentifier catalogNumber, validation predicates (\\n), warnings (\\n), versionHashModifier (null)\\n userInfo {\\n}, attributeType 700 , attributeValueClassName NSString, defaultValue 1171\\";\n hasFetchedData = \\"(<NSAttributeDescription: 0x6180001078f0>), name hasFetchedData, isOptional 1, isTransient 0, entity UWCourse, renamingIdentifier hasFetchedData, validation predicates (\\n), warnings (\\n), versionHashModifier (null)\\n userInfo {\\n}, attributeType 800 , attributeValueClassName NSNumber, defaultValue (null)\\";\n subject = \\"(<NSAttributeDescription: 0x6180001073e0>), name subject, isOptional 0, isTransient 0, entity UWCourse, renamingIdentifier subject, validation predicates (\\n), warnings (\\n), versionHashModifier (null)\\n userInfo {\\n}, attributeType 700 , attributeValueClassName NSString, defaultValue cs\\";\n term = \\"(<NSAttributeDescription: 0x618000107e00>), name term, isOptional 0, isTransient 0, entity UWCourse, renamingIdentifier term, validation predicates (\\n), warnings (\\n), versionHashModifier (null)\\n userInfo {\\n}, attributeType 700 , attributeValueClassName NSString, defaultValue 489\\";\n}, subentities {\n}, userInfo {\n}, versionHashModifier (null), uniquenessConstraints (\n)\";\n UWFetchedData = \"(<NSEntityDescription: 0x608000146930>) name UWFetchedData, managedObjectClassName UWFetchedData, renamingIdentifier UWFetchedData, isAbstract 0, superentity name (null), properties {\n \\"enrollment_capacity\\" = \\"(<NSAttributeDescription: 0x618000106e40>), name enrollment_capacity, isOptional 1, isTransient 0, entity UWFetchedData, renamingIdentifier enrollment_capacity, validation predicates (\\n), warnings (\\n), versionHashModifier (null)\\n userInfo {\\n}, attributeType 300 , attributeValueClassName NSNumber, defaultValue 0\\";\n \\"enrollment_total\\" = \\"(<NSAttributeDescription: 0x618000106f60>), name enrollment_total, isOptional 0, isTransient 0, entity UWFetchedData, renamingIdentifier enrollment_total, validation predicates (\\n), warnings (\\n), versionHashModifier (null)\\n userInfo {\\n}, attributeType 300 , attributeValueClassName NSNumber, defaultValue 0\\";\n section = \\"(<NSAttributeDescription: 0x618000106d20>), name section, isOptional 1, isTransient 0, entity UWFetchedData, renamingIdentifier section, validation predicates (\\n), warnings (\\n), versionHashModifier (null)\\n userInfo {\\n}, attributeType 700 , attributeValueClassName NSString, defaultValue (null)\\";\n}, subentities {\n}, userInfo {\n}, versionHashModifier (null), uniquenessConstraints (\n)\";\n}, fetch request templates {\n}"; reason = "Can't find or automatically infer mapping model for migration"; sourceModel = "(<NSManagedObjectModel: 0x600000085960>) isEditable 1, entities {\n UWCourse = \"(<NSEntityDescription: 0x600000145f90>) name UWCourse, managedObjectClassName NSManagedObject, renamingIdentifier UWCourse, isAbstract 0, superentity name (null), properties {\n catalogNumber = \\"(<NSAttributeDescription: 0x618000108b80>), name catalogNumber, isOptional 0, isTransient 0, entity UWCourse, renamingIdentifier catalogNumber, validation predicates (\\n), warnings (\\n), versionHashModifier (null)\\n userInfo {\\n}, attributeType 700 , attributeValueClassName NSString, defaultValue 1171\\";\n hasFetchedData = \\"(<NSAttributeDescription: 0x600000108dc0>), name hasFetchedData, isOptional 1, isTransient 0, entity UWCourse, renamingIdentifier hasFetchedData, validation predicates (\\n), warnings (\\n), versionHashModifier (null)\\n userInfo {\\n}, attributeType 800 , attributeValueClassName NSNumber, defaultValue (null)\\";\n newRelationship = \\"(<NSRelationshipDescription: 0x600000146880>), name newRelationship, isOptional 1, isTransient 0, entity UWCourse, renamingIdentifier newRelationship, validation predicates (\\n), warnings (\\n), versionHashModifier (null)\\n userInfo {\\n}, destination entity UWFetchedData, inverseRelationship newRelationship, minCount 0, maxCount 0, isOrdered 0, deleteRule 1\\";\n subject = \\"(<NSAttributeDescription: 0x600000108e50>), name subject, isOptional 0, isTransient 0, entity UWCourse, renamingIdentifier subject, validation predicates (\\n), warnings (\\n), versionHashModifier (null)\\n userInfo {\\n}, attributeType 700 , attributeValueClassName NSString, defaultValue cs\\";\n term = \\"(<NSAttributeDescription: 0x600000108ca0>), name term, isOptional 0, isTransient 0, entity UWCourse, renamingIdentifier term, validation predicates (\\n), warnings (\\n), versionHashModifier (null)\\n userInfo {\\n}, attributeType 700 , attributeValueClassName NSString, defaultValue 489\\";\n}, subentities {\n}, userInfo {\n}, versionHashModifier (null), uniquenessConstraints (\n)\";\n UWFetchedData = \"(<NSEntityDescription: 0x600000146f60>) name UWFetchedData, managedObjectClassName NSManagedObject, renamingIdentifier UWFetchedData, isAbstract 0, superentity name (null), properties {\n \\"enrollment_capacity\\" = \\"(<NSAttributeDescription: 0x6100001080d0>), name enrollment_capacity, isOptional 1, isTransient 0, entity UWFetchedData, renamingIdentifier enrollment_capacity, validation predicates (\\n), warnings (\\n), versionHashModifier (null)\\n userInfo {\\n}, attributeType 700 , attributeValueClassName NSString, defaultValue (null)\\";\n \\"enrollment_total\\" = \\"(<NSAttributeDescription: 0x610000108550>), name enrollment_total, isOptional 0, isTransient 0, entity UWFetchedData, renamingIdentifier enrollment_total, validation predicates (\\n), warnings (\\n), versionHashModifier (null)\\n userInfo {\\n}, attributeType 200 , attributeValueClassName NSNumber, defaultValue 0\\";\n newRelationship = \\"(<NSRelationshipDescription: 0x6100001465c0>), name newRelationship, isOptional 1, isTransient 0, entity UWFetchedData, renamingIdentifier newRelationship, validation predicates (\\n), warnings (\\n), versionHashModifier (null)\\n userInfo {\\n}, destination entity UWCourse, inverseRelationship newRelationship, minCount 0, maxCount 1, isOrdered 0, deleteRule 1\\";\n section = \\"(<NSAttributeDescription: 0x610000108430>), name section, isOptional 1, isTransient 0, entity UWFetchedData, renamingIdentifier section, validation predicates (\\n), warnings (\\n), versionHashModifier (null)\\n userInfo {\\n}, attributeType 700 , attributeValueClassName NSString, defaultValue (null)\\";\n}, subentities {\n}, userInfo {\n}, versionHashModifier (null), uniquenessConstraints (\n)\";\n}, fetch request templates {\n}"; }

zhangjianxing commented 7 years ago

I did not follow the instruction. sorry.