저는 iOS 앱 개발에있어서 아주 새로운 사람이고 AFNetworking 3.0을 사용할 것입니다. 모바일 번호를 입력하면 처음 볼 때. 제출 버튼을 클릭하면 서버와 연결되고 서버에서 다음과 같은 응답이 나타납니다.
responseData: [{"edriverId":"bd307a3ec329e10a2cff8fb87480823da114f8f4","token":"6uc4d1houfecbmjgy9ezpru9n25nw40b17cwk439j52"}]
이제 내 질문은 responseData에서 해당 토큰 만 가져 와서 다음보기에서 서버로 보낼 수있는 방법입니다. 제발 도와주세요.
참고 : 서비스 토큰을 호출 할 때마다 매번 변경됩니다.
내 코드는 다음과 같습니다.
-(void)serverconnection
{
NSString *Loginurl = [NSString stringWithFormat:@"https://24x7tracker.com/busservices/School/DriverPreLogin"];
NSDictionary *params = @{@"mobile":self.phonenumber.text,
@"archive":@"schooldb1"
};
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.responseSerializer = [AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingAllowFragments];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
AFSecurityPolicy* policy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
[policy setValidatesDomainName:NO];
[policy setAllowInvalidCertificates:YES];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html", nil];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json",@"text/html",nil];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json",@"text/plain",nil];
[manager POST:Loginurl parameters:params progress:nil success:^(NSURLSessionTask *task, id responseObject) {
NSLog(@"Json: %@", [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding]);
[self getdata:responseObject];
NSString *str = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
NSLog(@"responseData: %@", str);
[self performSegueWithIdentifier:@"loginsegue" sender:self];
}
failure:^(NSURLSessionTask *operation, NSError *error)
{
NSLog(@"Error: %@", error);
UIAlertController *Erroralert= [UIAlertController
alertControllerWithTitle:@" Network Connection Failed!!"
message:@"Please try again"
preferredStyle:UIAlertControllerStyleAlert];
[self presentViewController:Erroralert animated:YES completion:nil];
UIAlertAction* yesButton = [UIAlertAction
actionWithTitle:@"Ok"
style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action)
{
[self resignFirstResponder];
[Erroralert dismissViewControllerAnimated:YES completion:nil];
}];
[Erroralert addAction: yesButton];
}];
}
-(void)getdata:(NSData *)data
{}
두 가지 방법으로 할 수 있습니다
NSUserDefault
// NSArray *temp = (NSArray *)responseObject;
NSError *error;
NSArray *temp = [NSJSONSerialization JSONObjectWithData:responseObject options:kNilOptions error:&error];
[[NSUserDefaults standardUserDefaults] setObject:[[temp objectAtIndex:0] valueForKey:@"token"] forKey:@"token"];
[self performSegueWithIdentifier:@"loginsegue" sender:self];
두 번째 페이지
검색
검색을위한 String
에서 NSUserDefaults
당신이 사용하는 직접 수objectForKey
NSString *token = [[NSUserDefaults standardUserDefaults]objectForKey:@"token"];
첫 페이지는 문자열에 객체를 저장하기 위해 하나의 전역 값을 만듭니다.
@property (strong, nonatomic) NSString *tokenString;
응답 객체를 serilize하고 필요한 전역 값에 저장하십시오.
NSError *error;
NSArray *temp = [NSJSONSerialization JSONObjectWithData:responseObject options:kNilOptions error:&error];
// in this line we assingn the current value to global value
tokenString = [[temp objectAtIndex:0] valueForKey:@"token"];
[self performSegueWithIdentifier:@"loginsegue" sender:self];
해당 대상 뷰 컨트롤러에서 현재 문자열을 전달하기 위해 하나의 전역 값을 만듭니다.
@property (strong, nonatomic) NSString *fetchtokenString;
첫 번째 VC에서 prepareForSegue 메소드는 글로벌 값을 두 번째 페이지로 전달합니다.
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
secondViewController *vc = segue.destinationViewController;
// pass the current object to second page value
vc.fetchtokenString = tokenString;
마지막으로 두 번째 VC는 viewDidload 페이지에서 값을 얻을 수 있습니다.
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
NSLog (@"token value ==%@",fetchtokenString);
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다