我试图选择返回字符串的某个部分作为isEqual。
guest_user_id = [[NSMutableString alloc]initWithData:[APIv2 Guest_Sign_Up:guest_email] encoding:NSUTF8StringEncoding];
guest_user = [guest_user_id JSONValue];
appDelegate.guest_user_id = guest_user [@"id"];
NSData *jsonData = [guest_user_id dataUsingEncoding:NSUTF8StringEncoding];
NSError *e;
NSMutableDictionary *jsonList = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&e];
NSLog(@"jsonList: %@", jsonList[@"success"]);
if([jsonList [@"success"] isEqualToString:@"0"]){
API的回报看起来像这样......
Return: {"success":0,"error":"That email address is already registered! Please try again or login."}
它不会看到它是假的,只是去了其他地方。有任何想法吗?! :)
答案 0 :(得分:0)
执行此操作的正确方法是使用NSJSONSerialization将您从Web返回的JSON blob转换为ObjectiveC对象,然后向返回的对象询问“success”的值。
现在你已经使用了序列化程序,然后你得到了ObjectiveC对象:
id foo = NSJSONSerialization(.....);
那你现在做什么?那么你可以使用NSLog转储输出并查看它的外观。该调用使用的符号可以让你看到什么东西是字典,字符串等。
有时很难弄清楚是什么 - 例如“0”。这是一个数字还是一个字符串。因此,处理这种特殊情况的方法可以通过简单的方式完成:
NSInteger theNum = [[val objectForKey:@“Success”] integerValue],因为NSString和NSNumber都实现了该方法(我在代码中广泛使用它)。
但是,你真的想知道对象是什么 - 只是要知道。所以你要做的就是获得对象:
id foo = [val objectForKey:@“Success”]; NSLog(@“成功是%@”,NSStringFromClass([id class]);
您希望在代码中处理此问题,然后:
if([foo isKindOfClass [NSNumber class]){ ... else if([foo isKindOfClass:[NSString class])){ ... }