drewmccormack / ensembles

A synchronization framework for Core Data.
MIT License
1.63k stars 132 forks source link

iOS 12 users can no longer sync #281

Open willocdev opened 5 years ago

willocdev commented 5 years ago

I didn't make any changes to the code that worked in iOS 11, but now I get the following errors when attempting to sync:

[19293:5031258] [error] error: -addPersistentStoreWithType:Binary configuration:(null) URL:file:///var/mobile/Containers/Data/Application/3958D3AC-BED2-437B-AD3A-AB375BA4CF6B/Library/Application%20Support/com.mycompany.myapp/com.mentalfaculty.ensembles.eventdata/transitcache/MainStore/download/0_BF7C72BC-E135-4DA4-9DEE-858446A3D9A3-20796-00000B0B1A8C21B5_66DC6A8F.cdeevent options:{ NSInferMappingModelAutomaticallyOption = 1; NSMigratePersistentStoresAutomaticallyOption = 1; } ... returned error Error Domain=NSCocoaErrorDomain Code=259 "The file couldn’t be opened because it isn’t in the correct format." UserInfo={NSUnderlyingException=Can't read binary data from file, NSUnderlyingError=0x281c1be40 {Error Domain=NSCocoaErrorDomain Code=259 "The file “0_BF7C72BC-E135-4DA4-9DEE-858446A3D9A3-20796-00000B0B1A8C21B5_66DC6A8F.cdeevent” couldn’t be opened because it isn’t in the correct format." UserInfo={NSFilePath=/var/mobile/Containers/Data/Application/3958D3AC-BED2-437B-AD3A-AB375BA4CF6B/Library/Application Support/com.mycompany.myapp/com.mentalfaculty.ensembles.eventdata/transitcache/MainStore/download/0_BF7C72BC-E135-4DA4-9DEE-858446A3D9A3-20796-00000B0B1A8C21B5_66DC6A8F.cdeevent, NSUnderlyingException=value for key 'NS.objects' was of unexpected class 'CDEPropertyChangeValue'. Allowed classes are '{( NSDictionaryMapNode, NSOrderedSet, NSString, NSNumber, NSArray, NSDictionary, NSNull, NSDate, NSSet, NSData, NSUUID, NSDecimalNumber, NSURL )}'.}}} with userInfo dictionary { NSUnderlyingError = "Error Domain=NSCocoaErrorDomain Code=259 \"The file \U201c0_BF7C72BC-E135-4DA4-9DEE-858446A3D9A3-20796-00000B0B1A8C21B5_66DC6A8F.cdeevent\U201d couldn\U2019t be opened because it isn\U2019t in the correct format.\" UserInfo={NSFilePath=/var/mobile/Containers/Data/Application/3958D3AC-BED2-437B-AD3A-AB375BA4CF6B/Library/Application Support/com.mycompany.myapp/com.mentalfaculty.ensembles.eventdata/transitcache/MainStore/download/0_BF7C72BC-E135-4DA4-9DEE-858446A3D9A3-20796-00000B0B1A8C21B5_66DC6A8F.cdeevent, NSUnderlyingException=value for key 'NS.objects' was of unexpected class 'CDEPropertyChangeValue'. Allowed classes are '{(\n NSDictionaryMapNode,\n NSOrderedSet,\n NSString,\n NSNumber,\n NSArray,\n NSDictionary,\n NSNull,\n NSDate,\n NSSet,\n NSData,\n NSUUID,\n NSDecimalNumber,\n NSURL\n)}'.}"; NSUnderlyingException = "Can't read binary data from file"; }

drewmccormack commented 5 years ago

Have you got a recent version of the code?

See this: https://forums.developer.apple.com/thread/84588

Kind regards, Drew

On 20 Oct 2018, at 21:31, willocdev notifications@github.com wrote:

I didn't make any changes to the code that worked in iOS 11, but now I get the following errors when attempting to sync:

[19293:5031258] [error] error: -addPersistentStoreWithType:Binary configuration:(null) URL:file:///var/mobile/Containers/Data/Application/3958D3AC-BED2-437B-AD3A-AB375BA4CF6B/Library/Application%20Support/com.mycompany.myapp/com.mentalfaculty.ensembles.eventdata/transitcache/MainStore/download/0_BF7C72BC-E135-4DA4-9DEE-858446A3D9A3-20796-00000B0B1A8C21B5_66DC6A8F.cdeevent options:{ NSInferMappingModelAutomaticallyOption = 1; NSMigratePersistentStoresAutomaticallyOption = 1; } ... returned error Error Domain=NSCocoaErrorDomain Code=259 "The file couldn’t be opened because it isn’t in the correct format." UserInfo={NSUnderlyingException=Can't read binary data from file, NSUnderlyingError=0x281c1be40 {Error Domain=NSCocoaErrorDomain Code=259 "The file “0_BF7C72BC-E135-4DA4-9DEE-858446A3D9A3-20796-00000B0B1A8C21B5_66DC6A8F.cdeevent” couldn’t be opened because it isn’t in the correct format." UserInfo={NSFilePath=/var/mobile/Containers/Data/Application/3958D3AC-BED2-437B-AD3A-AB375BA4CF6B/Library/Application Support/com.mycompany.myapp/com.mentalfaculty.ensembles.eventdata/transitcache/MainStore/download/0_BF7C72BC-E135-4DA4-9DEE-858446A3D9A3-20796-00000B0B1A8C21B5_66DC6A8F.cdeevent, NSUnderlyingException=value for key 'NS.objects' was of unexpected class 'CDEPropertyChangeValue'. Allowed classes are '{( NSDictionaryMapNode, NSOrderedSet, NSString, NSNumber, NSArray, NSDictionary, NSNull, NSDate, NSSet, NSData, NSUUID, NSDecimalNumber, NSURL )}'.}}} with userInfo dictionary { NSUnderlyingError = "Error Domain=NSCocoaErrorDomain Code=259 \"The file \U201c0_BF7C72BC-E135-4DA4-9DEE-858446A3D9A3-20796-00000B0B1A8C21B5_66DC6A8F.cdeevent\U201d couldn\U2019t be opened because it isn\U2019t in the correct format.\" UserInfo={NSFilePath=/var/mobile/Containers/Data/Application/3958D3AC-BED2-437B-AD3A-AB375BA4CF6B/Library/Application Support/com.mycompany.myapp/com.mentalfaculty.ensembles.eventdata/transitcache/MainStore/download/0_BF7C72BC-E135-4DA4-9DEE-858446A3D9A3-20796-00000B0B1A8C21B5_66DC6A8F.cdeevent, NSUnderlyingException=value for key 'NS.objects' was of unexpected class 'CDEPropertyChangeValue'. Allowed classes are '{(\n NSDictionaryMapNode,\n NSOrderedSet,\n NSString,\n NSNumber,\n NSArray,\n NSDictionary,\n NSNull,\n NSDate,\n NSSet,\n NSData,\n NSUUID,\n NSDecimalNumber,\n NSURL\n)}'.}"; NSUnderlyingException = "Can't read binary data from file"; }

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or mute the thread.

willocdev commented 5 years ago

Still wrestling with this. I verified I have the most recent version of the code. The link you referenced refers to using transformables, but my Core Data model uses only numbers, strings, and booleans.

I specifically get the error when I am attempting to sync a fresh install of an app with data previously synced to iCloud.

The error is coming from: "addPersistentStoreWithType:Binary configuration:(null) URL:"

With error: Error Domain=NSCocoaErrorDomain Code=259 "The file couldn’t be opened because it isn’t in the correct format." UserInfo={NSUnderlyingException=Can't read binary data from file, NSUnderlyingError=0x281b45260 {Error Domain=NSCocoaErrorDomain Code=259 "The file “0_BF7C72BC-E135-4DA4-9DEE-858446A3D9A3-20796-00000B0B1A8C21B5_66DC6A8F.cdeevent” couldn’t be opened because it isn’t in the correct format."

drewmccormack commented 5 years ago

Your code is using no transformables, but Ensembles does. It has its own Core Data stores, and has a transformable class (CDEPropertyObjectChange I think). So you do need to request the exception, or register that class.

Drew

On 18 Nov 2018, at 21:23, willocdev notifications@github.com wrote:

Still wrestling with this. I verified I have the most recent version of the code. The link you referenced refers to using transformables, but my Core Data model uses only numbers, strings, and booleans.

I specifically get the error when I am attempting to sync a fresh install of an app with data previously synced to iCloud.

The error is coming from: "addPersistentStoreWithType:Binary configuration:(null) URL:"

With error: Error Domain=NSCocoaErrorDomain Code=259 "The file couldn’t be opened because it isn’t in the correct format." UserInfo={NSUnderlyingException=Can't read binary data from file, NSUnderlyingError=0x281b45260 {Error Domain=NSCocoaErrorDomain Code=259 "The file “0_BF7C72BC-E135-4DA4-9DEE-858446A3D9A3-20796-00000B0B1A8C21B5_66DC6A8F.cdeevent” couldn’t be opened because it isn’t in the correct format."

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/drewmccormack/ensembles/issues/281#issuecomment-439722729, or mute the thread https://github.com/notifications/unsubscribe-auth/AAEuAK7bCMm9w1P7lEbyRlTROO8xl8jdks5uwcHbgaJpZM4XyF6I.

drewmccormack commented 5 years ago

I should point out that this is only an issue in Ensembles v1, which uses the binary store. In E2, we use JSON, so no issue there.

Drew

On 19 Nov 2018, at 09:13, Drew McCormack drewmccormack@mac.com wrote:

Your code is using no transformables, but Ensembles does. It has its own Core Data stores, and has a transformable class (CDEPropertyObjectChange I think). So you do need to request the exception, or register that class.

Drew

On 18 Nov 2018, at 21:23, willocdev <notifications@github.com mailto:notifications@github.com> wrote:

Still wrestling with this. I verified I have the most recent version of the code. The link you referenced refers to using transformables, but my Core Data model uses only numbers, strings, and booleans.

I specifically get the error when I am attempting to sync a fresh install of an app with data previously synced to iCloud.

The error is coming from: "addPersistentStoreWithType:Binary configuration:(null) URL:"

With error: Error Domain=NSCocoaErrorDomain Code=259 "The file couldn’t be opened because it isn’t in the correct format." UserInfo={NSUnderlyingException=Can't read binary data from file, NSUnderlyingError=0x281b45260 {Error Domain=NSCocoaErrorDomain Code=259 "The file “0_BF7C72BC-E135-4DA4-9DEE-858446A3D9A3-20796-00000B0B1A8C21B5_66DC6A8F.cdeevent” couldn’t be opened because it isn’t in the correct format."

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/drewmccormack/ensembles/issues/281#issuecomment-439722729, or mute the thread https://github.com/notifications/unsubscribe-auth/AAEuAK7bCMm9w1P7lEbyRlTROO8xl8jdks5uwcHbgaJpZM4XyF6I.