我有一个UITextField,它允许用户为Facebook照片输入一个自定义相册名称。一旦textFieldShouldReturn,我把textField.text并发送到Facebook。一旦完成处理程序被调用,我想更新我的模型并重新加载我的tableView中的数据。textFieldShouldReturn - completionHandler中的某些方法永远不会被调用
我的问题是我的completionHandler的一些行从来没有被调用过。我使用调试器标记了所有行,并且一旦逐行执行代码,其中一些行就不会被调用,尤其是不会调用tableView重载方法。
我在做错误的线程?为什么我的completionHandler部分被取消并且从未被调用过?
这里是我的代码:
-(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]; –