사용자가 Facebook 사진에 대한 사용자 정의 앨범 이름을 입력 할 수있게하는 UITextField가 있습니다. textFieldShouldReturn이 끝나면 textField.text를 가져 와서 Facebook으로 보냅니다. 완성 처리기가 호출되면 내 모델을 업데이트하고 내 tableView에서 데이터를 다시로드하고 싶습니다.textFieldShouldReturn - completionHandler의 일부 메소드는 호출되지 않습니다.
내 문제는 내 completionHandler의 일부 라인이 호출되지 않는다는 것입니다. 디버거를 사용하여 모든 라인을 표시했는데 코드를 한 라인 씩 실행하면이 라인 중 일부는 호출되지 않습니다. 특히 tableView reload 메소드가 아닙니다.
나는 thread-wise를 잘못하고 있습니까? 왜 내 완성품 처리기가 부품을 취소하고 전화 한 적이 없습니까?
-(BOOL)textFieldShouldReturn:(UITextField *)textField {
NSString *newAlbumName;
newAlbumName = textField.text;
NSMutableDictionary* parameters = [NSMutableDictionary dictionary];
[parameters setObject:newAlbumName forKey:@"name"];
[parameters setObject:newAlbumName forKey:@"message"];
FBRequest* request = [FBRequest requestWithGraphPath:@"me/albums" parameters:parameters HTTPMethod:@"POST"];
FBRequestConnection *connection = [[FBRequestConnection alloc] init];
[connection addRequest:request
completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
if (!error) {
NSDictionary *newAlbum;
[newAlbum setValue:newAlbumName forKey:@"name"];
[self.albums addObject:newAlbum];
NSLog(@"created: %@", [newAlbum objectForKey:@"name"]);
[self.tableView reloadData];
}
else {
NSLog(@"Error: %@", error.userInfo);
}
}];
[connection start];
[textField resignFirstResponder];
[textField removeFromSuperview];
return YES;
}
라인 조건이 충족되지 않으면 실행되지 않습니다. – jlehr
@jlehr 그건 문제가되지 않습니다. if 문은 실행되었지만 그 명령문의 몇 줄만 실행되었습니다. 문제는 결국 NSDictionary를 초기화하는 방법이었습니다. 맞았을 텐데 : NSDictionary * newAlbum = [[NSDictionary alloc] initWithObjectsAndKeys : newAlbumName, @ "name", nil]; –