[__NSArrayM objectForKey:]: нераспознанный селектор, отправленный экземпляру 0x7faf59e2fd10

#ios #unrecognized-selector

#iOS #непризнанный селектор

Вопрос:

я пытаюсь создать страницу входа, которая получает данные из php-файла с помощью Json. он работает нормально, пока я не использую это предложение [jsonData objectForKey:@»state»] , появляется исключение. я попытался создать еще один диктофон, подобный некоторым ответам на вопрос ранее. но со мной ничего не работает.

 - (IBAction)login:(id)sender {
    @try {

        NSString *post =[[NSString alloc] initWithFormat:@"email=%@amp;password=%@",[firsttext text],[second text]];
        NSLog(@"PostData: %@",post);

        NSURL *url=[NSURL URLWithString:@"http://itsolution.co.in/coverageapi/login.php"];

        NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];

        NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];

        NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
        [request setURL:url];
        [request setHTTPMethod:@"POST"];
        [request setValue:postLength forHTTPHeaderField:@"Content-Length"];
        [request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
        [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
        [request setHTTPBody:postData];

        [NSURLRequest setAllowsAnyHTTPSCertificate:YES forHost:[url host]];

        NSError *error = nil;
        NSHTTPURLResponse *response = nil;
        NSData *urlData=[NSURLConnection sendSynchronousRequest:request returningResponse:amp;response error:amp;error];

        NSLog(@"Response code: %d", [response statusCode]);
        if ([response statusCode] >=200 amp;amp; [response statusCode] <300)
        {
            NSString *responseData = [[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding];
            NSLog(@"Response ==> %@", responseData);
            SBJsonParser *jsonParser = [SBJsonParser new];
            NSDictionary *jsonData = (NSDictionary *) [jsonParser objectWithString:responseData error:nil];
            NSLog(@"jsondata %@",jsonData);
            NSInteger success = [(NSNumber *) [jsonData objectForKey:@"success"] integerValue];
            NSLog(@"%d",success);
            if(success == 1)
            {
                NSLog(@"Login SUCCESS");
            } else {
                NSLog(@"failed");
            }

        } else {
            if (error) NSLog(@"Error: %@", error);
        }

    }
    @catch (NSException * e) {
        NSLog(@"Exception: %@", e);
    }
   }
  

Комментарии:

1. [__NSArrayM objectForKey:]: unrecognized selector просто означает, что получатель представляет собой массив, а не словарь.

2. @Dipek ключ «состояние» не существует в вашем ответе.

Ответ №1:

Попробуйте этот и, пожалуйста, проверьте, существует ли ключ состояния или нет 1-го

 - (void) logIn { 

     ///1 
 NSMutableDictionary *responseDic_Lv=[[NSMutableDictionary alloc]init];
NSString *post_Lv = [NSString       stringWithFormat:@"email_id=%@amp;password=%@"     ,userNameTFT1.text,passwordTFT2.text];


 ///2
 NSData *postData_Lv = [post_Lv dataUsingEncoding:NSASCIIStringEncoding      allowLossyConversion:YES];
NSString *postLength_Lv = [NSString stringWithFormat:@"%lu",(unsigned     long)[postData_Lv length]];

//NSLog(@"Post Length Is... %@",postLength_Lv);


 //3
 NSString *BaseUrl_Login = [NSString stringWithFormat:@"Your_Login_URL"];

   NSMutableURLRequest *request_Lv =[[NSMutableURLRequest alloc] init];
 [request_Lv setURL:[NSURL URLWithString:BaseUrl_Login]];

 //NSLog(@" Rahul Goku request is >>> %@",request);

   [request_Lv setHTTPMethod:@"POST"]; //Write Post or Get accordind  method here

   [request_Lv setValue:postLength_Lv forHTTPHeaderField:@"Content-Length"];

   [request_Lv setValue:@"application/x-www-form-urlencoded"   forHTTPHeaderField:@"Content-Type"];

   [request_Lv setHTTPBody:postData_Lv]; //Set HTTP

    NSData *response_Lv = [NSURLConnection   sendSynchronousRequest:request_Lv
     returningResponse:nil error:nil];

  responseDic_Lv=[NSJSONSerialization JSONObjectWithData:response_Lv    options:NSJSONReadingAllowFragments error:nil];



 ///4 Chk Data...
   NSString *ResultStr1 = (NSString *)[responseDic_Lv   valueForKey:@"YourKey"];

NSLog(@"Result From Server is=====> %@",ResultStr1);


 if ([ResultStr1 isEqualToString:@"success"]) {


 NSString *ResponseStr2 = (NSString *)[responseDic_Lv  valueForKey:@"YourKey"];



 } else {  // Login Error password or email.... Error...


    }



}