我有一個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]; –