-
Notifications
You must be signed in to change notification settings - Fork 209
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Invalid type in JSON write (__NSCFData)? #106
Comments
This exception appears at the "userDefaultsChanged" event. Inside the args (NSDictionary) is a lot of Apple stuff. It seems that some parts of it can't serialized to Json? |
Grrr — your last comment is almost certainly correct. Thanks for the heads-up. For me, everything in my NSUserDefaults was able to be serialised. It seems I was too presumptuous that this implied everyone's NSUserDefaults would therefore also be able to be serialised. I'll have to change it so that only a subset is passed through to JavaScript. The easy solution would be just keys beginning with |
Quick question — are you familiar with Xcode's debugger output? If so, could you tell me if you got the following message in it?
|
I never see this NSLog message. Portion out of Frameworks/Foundation/NSJSONSerialization.h comments: "... If the object will not produce valid JSON then an exception will be thrown..." As a workaround to get things running i inserted at some points: But i think this is no good solution :-) |
I've just committed a fix for this situation; I removed getUserDefaults and replaced it with getMyDefaults, to ensure we only ever return those values we previously set ourselves (and can thus be confident of their data type). Could you have a try when you get a chance and see if the changes are working for you? |
I actually like the sound of your suggested |
The check itself is good. What i don't like is that one UserDefault object prevents to get all the other interesting stuff. But at this point it is maybe better to write a custom conversion. Your last commits are working for me. |
What I don't understand is why NSJSONSerialization seems to be all-or-nothing. I think a partial-serialisation of the UserDefault object would still be useful (omitting just those items that can't be serialised). Do you think we should go through each of the keys of the Dictionary and check |
I think this would be a good solution. |
Hi, i cloned macgap and when i compile the unmodified project and resize or move the window of the macgap app to another position i get an error? What i am doing wrong? Window resizing is not possible?
2014-04-24 22:45:47.591 MacGap[9549:303] Invalid type in JSON write (NSCFData)
2014-04-24 22:45:47.593 MacGap[9549:303]
0 CoreFoundation 0x00007fff98a9e25c __exceptionPreprocess + 172
1 libobjc.A.dylib 0x00007fff99cb5e75 objc_exception_throw + 43
2 CoreFoundation 0x00007fff98a9e10c +[NSException raise:format:] + 204
3 Foundation 0x00007fff93b36f06 _writeJSONValue + 719
4 Foundation 0x00007fff93b3ae39 ___writeJSONObject_block_invoke + 214
5 CoreFoundation 0x00007fff989d3ddc ____NSDictionaryEnumerate_block_invoke412 + 28
6 CoreFoundation 0x00007fff989929ac CFBasicHashApply + 124
7 CoreFoundation 0x00007fff989d3c7b __NSDictionaryEnumerate + 587
8 Foundation 0x00007fff93b3aa39 _writeJSONObject + 397
9 Foundation 0x00007fff93b36e26 _writeJSONValue + 495
10 Foundation 0x00007fff93b36c02 -[_NSJSONWriter dataWithRootObject:options:error:] + 129
11 Foundation 0x00007fff93b3934a +[NSJSONSerialization dataWithJSONObject:options:error:] + 337
12 MacGap 0x000000010000c43f +[JSEventHelper triggerEvent:withArgs:forObject:forWebView:] + 191
13 MacGap 0x000000010000c33c +[JSEventHelper triggerEvent:withArgs:forWebView:] + 172
14 MacGap 0x000000010000883b -[UserDefaults defaultsChanged:] + 187
15 CoreFoundation 0x00007fff98a6ce0c __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER + 12
16 CoreFoundation 0x00007fff989608dd _CFXNotificationPost + 2893
17 Foundation 0x00007fff939437ba -[NSNotificationCenter postNotificationName:object:userInfo:] + 68
18 AppKit 0x00007fff92eca3da -[NSWindow _setFrame:updateBorderViewSize:] + 395
19 AppKit 0x00007fff93058acf -[NSWindow _setFrameAfterMove:] + 370
20 AppKit 0x00007fff9302e140 -[NSWindow _windowMovedToRect:] + 627
21 AppKit 0x00007fff93058947 -[NSWindow _windowMoved:] + 159
22 AppKit 0x00007fff92faadb1 -[NSWindow sendEvent:] + 3721
23 AppKit 0x00007fff92f4b82b -[NSApplication sendEvent:] + 2348
24 AppKit 0x00007fff92d9bb89 -[NSApplication run] + 646
25 AppKit 0x00007fff92d86913 NSApplicationMain + 940
26 MacGap 0x0000000100007302 main + 34
27 libdyld.dylib 0x00007fff8e0bb5fd start + 1
The text was updated successfully, but these errors were encountered: