3

i am getting error when i try to run an app on my simulator. I have copied the JSON(JSON Framework) project in my app but my simulator crashes when it compiles the below lines,(I am using iOS 4.2)

- (void)viewDidLoad {
    [super viewDidLoad];
    NSString *jsonString = [NSString stringWithString:@"{\"foo\": \"bar\"}"];
    NSDictionary *dictionary = [jsonString JSONValue];
    NSLog(@"Dictionary value for \"foo\" is \"%@\"", [dictionary objectForKey:@"foo"]);
}

ERROR:

2011-03-02 13:33:37.304 test[10918:207] -[NSCFString JSONValue]: unrecognized selector sent to instance 0x3034
2011-03-02 13:33:37.308 test[10918:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSCFString JSONValue]: unrecognized selector sent to instance 0x3034'
*** Call stack at first throw:
(
    0   CoreFoundation                      0x00da7be9 __exceptionPreprocess + 185
    1   libobjc.A.dylib                     0x00efc5c2 objc_exception_throw + 47
    2   CoreFoundation                      0x00da96fb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
    3   CoreFoundation                      0x00d19366 ___forwarding___ + 966
    4   CoreFoundation                      0x00d18f22 _CF_forwarding_prep_0 + 50
    5   test                                0x000025d7 -[testViewController viewDidLoad] + 119
    6   UIKit                               0x0035e65e -[UIViewController view] + 179
    7   test                                0x0000237e -[testAppDelegate application:didFinishLaunchingWithOptions:] + 79
    8   UIKit                               0x002b11fa -[UIApplication _callInitializationDelegatesForURL:payload:suspended:] + 1163
    9   UIKit                               0x002b355e -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 439
    10  UIKit                               0x002bddb2 -[UIApplication handleEvent:withNewEvent:] + 1533
    11  UIKit                               0x002b6202 -[UIApplication sendEvent:] + 71
    12  UIKit                               0x002bb732 _UIApplicationHandleEvent + 7576
    13  GraphicsServices                    0x016dda36 PurpleEventCallback + 1550
    14  CoreFoundation                      0x00d89064 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52
    15  CoreFoundation                      0x00ce96f7 __CFRunLoopDoSource1 + 215
    16  CoreFoundation                      0x00ce6983 __CFRunLoopRun + 979
    17  CoreFoundation                      0x00ce6240 CFRunLoopRunSpecific + 208
    18  CoreFoundation                      0x00ce6161 CFRunLoopRunInMode + 97
    19  UIKit                               0x002b2fa8 -[UIApplication _run] + 636
    20  UIKit                               0x002bf42e UIApplicationMain + 1160
    21  test                                0x0000230c main + 102
    22  test                                0x0000229d start + 53
)
terminate called after throwing an instance of 'NSException'
Program received signal:  “SIGABRT”.
(gdb) 
developer
  • 5,178
  • 11
  • 47
  • 72
  • Which JSON framework are you using? Are you importing it in the classes that require it? You're attempting to send `JSONValue` to `NSString`, which has no such method, although I suppose this framework could be making use of categories to bold on this functionality. – Mark Adams Mar 02 '11 at 20:39
  • I have actually downloaded JsoniPhoneSDK.dmg file from internet. i have added the JSON folder in my project as suggested by one of the tutorials. Included the JSON.h file in my appController.m file. i using the below tutorial to install JSON http://mobileorchard.com/tutorial-json-over-http-on-the-iphone/ – developer Mar 02 '11 at 20:48
  • Did you check the box to copy the source files when you added them to your project? If not, and you deleted the original disk image, this could be your problem. – Mark Adams Mar 02 '11 at 21:12
  • Yes i did..but do you think that this might be because i am using XCode 3.2.5 or or it doesnt have anything to do with that. – developer Mar 02 '11 at 21:22

3 Answers3

10

Try adding -ObjC -all_load to the OTHER_LINKER_FLAGS setting. If that is not an option, you could try to use the SBJsonParser or SBJsonWriter objects directly rather than the category methods.

Stig Brautaset
  • 2,602
  • 1
  • 22
  • 39
9

Make sure that SBJSON files are being compiled! Target->Build phases->Compile files <- check if the *.m files of SBJSON are there!

gbuzogany
  • 1,911
  • 16
  • 17
0

Adding -ObjC -all_load to app target->build settings ->Linking ->Other Linker Flags -> Debug worked in XCode 4.

Earlier it was crashing

Gamma-Point
  • 1,514
  • 13
  • 14