比如:
为什么会出现这个警告? 导致的是永远匹配不出来,到
_userInfo.address = cell02.mTextField.text;
_userInfo.provinceId = [selftransformProvince:_province];
这里 [self transformProvince:_province]; 返回的始终都是空 或者一个;
原因是:
直接就返回了,返回值 在外面写个变量 接受一下,for 循环没错 但你不该在for里面写return,如果第一次不满足 一下子就结束了 逻辑也是问题!!!
改法是
- (NSString *)transformProvince:(NSString *)province
{
NSString *strP=nil;
for (int i=0; i<_privinceArray.count; i++) {
if ([provinceisEqualToString:[_privinceArrayobjectAtIndex:i]]) {
strP= _privinceId[i];
}
}
return strP;
}
后来又遇到一个问题,拿到了 [self transformProvince:_province]返回的值,但是 _userInfo.provinceId 还是空的,值还是没有存进model里面,
_userInfo.provinceId = [selftransformProvince:_province];
那就是 :
-(void)requsetGetUserInfo:(NSString *)mobileNum completion:(void(^)(BOOL success))completion
{
NSMutableDictionary *para = [[NSMutableDictionaryalloc] initWithDictionary:
@{@"application":@"GetUserInfo.Req",
@"Phone":mobileNum
}];
[[YFRequestsharedInstance] requestWithDictionary:paracompletion:^(BOOL success,id responseData) {
if (success) {
//第二次可以查到个人信息
DLog(@"GetUserInfo.Req = %@",responseData);
NSDictionary *dic = responseData[@"data"];
_userInfo = [[YFUserInfoModelalloc] init];
_userInfo.companyName = dic[@"companyName"];
_userInfo.realName = dic[@"realName"];
_userInfo.mobile = dic[@"mobile"];
_userInfo.identityNo = dic[@"identityNo"];
_userInfo.address = dic[@"address"];
_userInfo.phone = dic[@"phone"];
_userInfo.isExistMember = [dic[@"isExistMember"]boolValue];
if (_userInfo.isExistMember) {
[_dataArrayremoveObjectAtIndex:0];
[_dataArrayinsertObject:[NSArrayarrayWithObjects:@"手机号码",@"验证码",nil] atIndex:0];
[self.mTableViewreloadData];
[self.viewendEditing:YES];
completion(YES);
}else{
[self.mTableViewreloadData];
[self.viewendEditing:YES];
completion(NO);
}
}
}];
}
如果是接口没有请求成功 将永远不执行success括号里面的代码,也就是 _userInfo = [[YFUserInfoModel alloc] init]; 没法构造;
正确的改法是 将 _userInfo = [[YFUserInfoModel alloc] init]; 移到didiLoad里面创建,或者是移到请求参数上面, 不管接口请求成功与否,用户的YFUserInfoModel
保证是存在的,以免赋值的时候,总是拿不到。
多么痛苦的领悟!