2017-05-31 58 views
0

嗨我是新來的iOS和以下是我的代碼我必須通過頂部,我從請求答覆...請幫助我我卡在這裏 第一視圖控制器是otp查看第二vc是verifyviewcontrollerObjective c iOS傳遞數據

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; 
} 

驗證視圖或者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 

驗證視圖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的,我得到的答覆( 「成功」: 「1」; 「OTP」: 「985123」),我需要這個OTP存儲和驗證下一頁請幫助

+1

您可能會發現[這](HTTPS:/ /stackoverflow.com/questions/5210535/passing-dat a-between-view-controllers)鏈接helpfull。 –

+0

2017-05-31 12:10:12.540 MenuBar [1315:76259]數據詳細信息是phone = 9047038606 2017-05-31 12:10:12.554 MenuBar [1315:76259]傳遞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] {「成功「:1,」otp「:」118301「} 2017-05-31 12:10:13.269 MenuBar [1315:76307] {」success「:1,」otp「:」118301「} – Akshay

+0

@EvgeniyKleban I have檢查它,但答案是傳遞布爾值 – Akshay

回答

0

首先,你需要改變物業

@property (weak,nonatomic) NSArray *tmp; 

@property (strong,nonatomic) NSStirng *tmp; 

值分配給TMP如下

[[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]; 

通行證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

感謝您的努力!! bt stilll我得到傳遞值null在日誌 – Akshay

+0

2017-05-31 12:43:32.741 MenuBar [1398:90037]傳遞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

您需要提取值。 – KKRocks