目标c – 获得空值
我一直坚持这一段时间了,但最新发生的是,当从MySQL请求回来有一个空值,但我如何检查空值已经打我的条件,所以我不存储这个值在数组。 代码如下
我一直得到的错误是 – [NSNull isEqualToString:]:无法识别,即时尝试绑定在一个tableview中的数组
- (void)viewDidLoad { JobAddSiteAppDelegate *ja = (JobAddSiteAppDelegate *)[[UIApplication sharedApplication] delegate]; tempArray = [[NSMutableArray alloc] init]; NSString *strURL = [NSString stringWithFormat:@"http://www.bestitjobs.co.uk/appresults3.php", ""]; NSData *nsData = [NSData dataWithContentsOfURL:[NSURL URLWithString: strURL]]; //NSLog(@"JSON: %@", nsData); //NSString *strResult = [[[NSString alloc] initWithData:nsData encoding:NSUTF8StringEncoding] autorelease]; //NSLog(@"Result: %@",strResult); //NSError *e = nil; JSONDecoder* decoder = [[JSONDecoder alloc] init]; NSDictionary* listDictionary = [nsData objectFromJSONData]; NSArray* people =[listDictionary objectForKey:@"jobs"]; for (NSDictionary *person in people) { NSLog(@"people %@",people); if([person objectForKey:@"position"] != [NSNull class]) { NSString *position = [person objectForKey:@"position"]; NSLog(@"position %@",position); [tempArray addObject: position]; } } self.listData = tempArray; [tempArray release]; [listData release]; [super viewDidLoad]; }
错误
2012-12-06 12:22:11.314 JobAddSite [7718:207]职位高级networking和系统顾问2012-12-06 12:22:11.316 JobAddSite [7718:207] position SAP Business One / SAP B1顾问伦敦2012-12-12 -06 12:22:11.317 JobAddSite [7718:207]职位业务开发经理 – 市场领先的IT公司2012-12-06 12:22:11.318 JobAddSite [7718:207] – [NSNull isEqualToString:]:无法识别的select器发送到实例0xe565e8 2012-12-06 12:22:11.321 JobAddSite [7718:207] *由于未捕获的exception'NSInvalidArgumentException',原因:' – [NSNull isEqualToString:]:无法识别的select器发送到实例0xe565e8'* *抛出:(0 CoreFoundation 0x00de95a9 exceptionPreprocess + 185 1 libobjc.A.dylib 0x00f3d313 objc_exception_throw + 44 2 CoreFoundation 0x00deb0bb – [NSObject(NSObject)doesNotRecognizeSelector:] + 187 3 CoreFoundation 0x00d5a966 __ forwarding + 966 4 CoreFoundation 0x00d5a522 _CF_forwarding_prep_0 + 50 5 JobAddSite 0x000024cd – [ResultViewController v iewDidLoad] + 604 6 UIKit 0x00389089 – [UIViewController view] + 179 7 UIKit 0x0038aa3d – [UIViewController viewControllerForRotation] + 63 8 UIKit 0x00386988 – [UIViewController _visibleView] + 90 9 UIKit 0x0062893c – [UIClientRotationContext initWithClient:toOrientation:duration:andWindow:] + 354 10 UIKit 0x0030081e – [UIWindow _setRotatableClient:toOrientation:updateStatusBar:duration:force:] + 954 11 UIKit 0x00588619 – [UIWindowController transition:fromViewController:toViewController:target:didEndSelector:] + 1381 12 UIKit 0x0038d65d – [UIViewController presentModalViewController:withTransition:] + 3478 13 JobAddSite 0x0000213f – [JobAddSiteViewController search] + 270 14 UIKit 0x002d94fd – [UIApplication sendAction:to:from:forEvent:] + 119 15 UIKit 0x00369799 – [UIControl sendAction:to:forEvent:] + 67 16 UIKit 0x0036bc2b – [UIControl (Internal)_sendActionsForEvents:withEvent:] + 527 17 UIKit 0x0036a7d8 – [UIControl touchesEnded:withEvent:] + 458 18 UIKit 0x002fdded – [UIWindow _sendTouchesFor 事件:] + 567 19的UIKit 0x002dec37 – [UIApplication的的SendEvent:] + 447 20的UIKit 0x002e3f2e _UIApplicationHandleEvent + 7576 21个GraphicsServices 0x01741992 PurpleEventCallback + 1550 22的CoreFoundation 0x00dca944 CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION + 52 23的CoreFoundation 0x00d2acf7 __CFRunLoopDoSource1 + 215 24的CoreFoundation 0x00d27f83 __CFRunLoopRun + 979 25的CoreFoundation 0x00d27840 CFRunLoopRunSpecific + 208 26 CoreFoundation 0x00d27761 CFRunLoopRunInMode + 97 27 GraphicsServices 0x017401c4 GSEventRunModal + 217 28 GraphicsServices 0x01740289 GSEventRun + 115 29 UIKit 0x002e7c93 UIApplicationMain + 1160 30 JobAddSite 0x00001dec main + 102 31 JobAddSite 0x00001d7d start + 53)抛出“NSException”
试试这个:
if ([person objectForKey:@"position"]) {..}
这一个是相同的,但也许更可读:
if ([person objectForKey:@"position"] != nil) {..}
嗨使用下面的代码。
它工作得很好。
下载支持文件
NSMutableArray *empArray = [[NSMutableArray alloc] init]; SBJSON *parser = [[SBJSON alloc] init]; NSURLRequest *request1 = [NSURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://www.bestitjobs.co.uk/appresults3.php"]]]; NSLog(@"GGGG:%@",request1); NSData *response1 = [NSURLConnection sendSynchronousRequest:request1 returningResponse:nil error:nil]; NSString *json_string = [[NSString alloc] initWithData:response1 encoding:NSUTF8StringEncoding]; NSDictionary *statuses = [parser objectWithString:json_string error:nil]; NSLog(@"List Dictionary:%@",statuses); NSArray* people =[statuses objectForKey:@"jobs"]; for(NSDictionary *test in people) { [empArray addObject:[test valueForKey:@"position"]]; } NSLog(@"EMP ARRAY CATEGORY:%@",empArray);
注意:在使用SBJSon支持文件并导入JSON.h之前
并检查您的控制台。
像这样检查条件,并为Array添加值
for (NSDictionary *person in people) { NSLog(@"people %@",people); NSString *position = [person objectForKey:@"position"]; if(position) { [tempArray addObject: position]; } }