2017-05-31 2 views
0

salut je suis nouveau sur iOS et ci-dessous est mon code, je dois passer le haut que je reçois de la demande réponse ... s'il vous plaît aidez-moi je suis coincé ici première vue contrôleur est otp voir deuxième vc est verifyviewcontrollerObjectif c iOS données de passage

vue Otp ch

#import <UIKit/UIKit.h> 
@interface OtpViewController : UIViewController 
@property (nonatomic, retain) NSString *str; 
@end 

otpviewcontroller.m

#import "OtpViewController.h" 
#import "VerifyViewController.h" 
@interface OtpViewController() <VerifyViewControllerDelegate> 
@property (weak, nonatomic) IBOutlet UIImageView *bbi; 
@property (weak, nonatomic) IBOutlet UIButton *submittf; 
@property (weak, nonatomic) IBOutlet UITextField *mobiletf; 
@property (weak,nonatomic) NSArray *tmp; 
@property(weak,nonatomic) NSString *requestReply ; 
//@property(weak,nonatomic) NSDictionary *A; 
@end 

@implementation OtpViewController 
- (void)viewDidLoad { 
[super viewDidLoad]; 
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"background"]]; 
NSLog(@"viewDidLoad"); 
[super viewDidLoad]; 

} 

- (IBAction)submitb:(id)sender 
{ 

if (_mobiletf.text && _mobiletf.text.length >0) 
{ 
    /* not empty - do something */ 
    NSString *post = [NSString stringWithFormat:@"phone=%@",_mobiletf.text]; 
    NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; 
    // Next up, we read the postData's length, so we can pass it along in the request. 

    NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]]; 
    // Now that we have what we'd like to post, we can create an NSMutableURLRequest, and include our postData. 

    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; 
    [request setURL:[NSURL URLWithString:@"http://www.sitesandflats.com/send_otp.php"]]; 
    [request setHTTPMethod:@"POST"]; 
    [request setValue:postLength forHTTPHeaderField:@"Content-Length"]; 
    [request setHTTPBody:postData]; 
    NSLog(@"the data Details is %@", post); 

    // And finally, we can send our request, and read the reply by creating a new NSURLSession: 

    NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]]; 
    [[session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { 
     NSString *requestReply = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]; 
     NSLog(@"requestReply: %@", requestReply); 
     NSString *str=requestReply; 
     VerifyViewController *vc = [[VerifyViewController alloc] init]; 
     NSString *tmp=requestReply; 
     NSLog(@"%@",str); 
     NSLog(@"%@",_tmp); 

    }] resume]; 
    [ self performSegueWithIdentifier:@"b1" sender:self]; 
    } 
else 
{ 
    /* what ever */ 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" 
     message:@"Please check your input!!." 
     delegate:self 
     cancelButtonTitle:@"OK" 
     otherButtonTitles:nil]; 
    [alert show]; 
} 


} 

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(nullable id)sender{ 

VerifyViewController *loadCtr = (VerifyViewController *)segue.destinationViewController; 
loadCtr.delegate = self; 
loadCtr.tmpStr = (@"otp: %@",_tmp); 
NSLog(@"passing val: %@",_tmp); 
} 
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
return YES; 
} 

Vérifier vue Controller.h

#import <UIKit/UIKit.h> 
@protocol VerifyViewControllerDelegate <NSObject> 
-(void)moveToA:(NSString *)str; 
@end 
@interface VerifyViewController : UIViewController 
@property (nonatomic, copy) NSString *tmpStr; 
@property (nonatomic, assign) id <VerifyViewControllerDelegate> delegate; 
//@property (nonatomic, strong) OtpViewController *received; 
//@property (strong, nonatomic) IBOutlet UITextField *textDisplay; 
@property(nonatomic,weak) NSMutableArray *myAray; 
@property(nonatomic,strong) NSString *object; 
@property(strong,nonatomic) NSString *tmp1; 
@end 

Vérifier vue Controller.m

#import "VerifyViewController.h" 
#import "OtpViewController.h" 
@interface VerifyViewController() 
@property (weak, nonatomic) IBOutlet UITextField *otptf; 
@property (weak, nonatomic) IBOutlet UIButton *submitb; 
//@property (weak,nonatomic) textDisplay; 
//@property (weak,nonatomic) NSString *received; 
@end 


@implementation VerifyViewController 
- (void)viewDidLoad { 
[super viewDidLoad]; 
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage  imageNamed:@"background"]]; 

// Do any additional setup after loading the view. 
} 
- (IBAction)submitb:(id)sender { 
NSLog(@"%@",_tmpStr); 
if(_otptf.text==_tmpStr) 
{ 
    [self performSegueWithIdentifier:@"b2" sender:self]; 
} 
else{ 

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" 
                message:@"Incorrect otp please check the input!!!." 
                delegate:self 
              cancelButtonTitle:@"OK" 
              otherButtonTitles:nil]; 
    [alert show]; 

} 


} 

- (void)didReceiveMemoryWarning { 
[super didReceiveMemoryWarning]; 
// Dispose of any resources that can be recreated. 
} 

@end 

à NSLog je reçois comme réponse ("succès": "1"; "BdP": "985123") J'ai besoin ce BdP pour stocker et vérifier dans page suivante s'il vous plaît aider

+1

Vous trouverez peut-être [ce] (https://stackoverflow.com/questions/5210535/passing-dat a-between-view-controllers) lien utile. –

+0

2017-05-31 12: 10: 12.540 MenuBar [1315: 76259] les données Détails est phone = 9047038606 2017-05-31 12: 10: 12.554 MenuBar [1315: 76259] passant val: (null) 2017- 05-31 12: 10: 13.267 MenuBar [1315: 76307] requestReply: {"success": 1, "otp": "118301"} 2017-05-31 12: 10: 13.268 MenuBar [1315: 76307] {" succès ": 1," otp ":" 118301 "} 2017-05-31 12: 10: 13.269 MenuBar [1315: 76307] {" succès ": 1," otp ":" 118301 "} – Akshay

+0

@EvgeniyKleban J'ai vérifié, mais les réponses passaient des valeurs booliques – Akshay

Répondre

0

vous devez d'abord changer la propriété

de

@property (weak,nonatomic) NSArray *tmp; 

Pour

@property (strong,nonatomic) NSStirng *tmp; 

valeur Assigner à tmp comme ci-dessous

[[session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { 
      NSString *requestReply = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]; // this is json string 
      NSError *error; 
      NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error]; // you need to convert to dictionary object 

      NSLog(@"requestReply: %@", jsonDict); 
      self.tmp=[jsonDict valueForKey:@"otp"] ; // you need to extract value using the key [requestReply valueForKey:@"otp"]; 
      NSLog(@"%@",self.tmp); 

    }] resume]; 

Passe tmp à VerifyVIewController

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(nullable id)sender{ 

VerifyViewController *loadCtr = (VerifyViewController *)segue.destinationViewController; 
loadCtr.delegate = self; 
loadCtr.tmpStr = self.tmp; 
NSLog(@"passing val: %@",_tmp); 
} 
+0

merci pour votre effort !! bt stilll je reçois des valeurs de passage nul au journal – Akshay

+0

2017-05-31 12: 43: 32.741 MenuBar [1398: 90037] passant val: (null 2017-05-31 12: 43: 33.464 MenuBar [1398: 90096] requestReply: {"success": 1, "otp": "753161"} 2017-05-31 12: 43: 33.464 MenuBar [1398: 90096] {"success": 1, "otp": "753161"} – Akshay

+0

vous devez extraire une valeur. – KKRocks