AFNetworking을 사용하여 iOS를 코딩 할 때이 문제가 여러 번 발생했지만 지금까지 해결 방법을 찾지 못했습니다.완료 블록이있는 Objective-C 메소드가 완료 블록에서 사용하려는 값을 반환합니다.
기본적으로 호출 완료 블록에서 사용할 주 스레드에 값을 반환하는 API 호출을 만들고 싶습니다.
특히, 게시 할 #tags 및 @ 태그와 연결된 게시 개체가 있습니다 ( 초기 "트윗"이 내 db에서 생성 된 후). 나는 내가 #tags 및 @tags 게시 매개 변수로 post_id를를 사용해야하기 때문에이 방법의 완성 블록에있을 필요가 : postHashtagsToDB 및 postAttagsToDB의 몸 내부
-(void)postToDB
{
_postId = [[[ReelRailsAFNClient sharedClient] createPostWithParameters:
@{@"user_id":_userId,
@"caption":_caption}
CompletionBlock:^(NSError *error) {
if(!error){
[self postHashtagsToDB:_postId];
[self postAttagsToDB:_postId];
}
}] postId];
}
을 _postId는 평가 (없는). postId를 캡처하여 postHashtagsToDB
및 postATtagsToDB
에 어떻게 삽입합니까?
감사합니다,
JA
편집 : 여기
이 createPostWithParameters 내 방법 정의입니다 : CompletionBLock :
- (Post*) createPostWithParameters:(NSDictionary*)parameters
CompletionBlock:(AFNClientErrorCompletionBlock)block{
Post *post = [[Post alloc] init];
[self POST:@"posts" parameters:parameters
success:^(NSURLSessionDataTask *task, id responseObject){
NSLog(@"Post Created Successfully");
post = responseObject;
block(nil);
}failure:^(NSURLSessionDataTask *task, NSError *error) {
NSLog(@"Post Not Created");
block(error);
}];
return post;
}
'오류'가 없습니다. – NobodyNada
내가 잘못하지 않는다면 완료 핸들러는 완료 블록 핸들러 내에서 _postId를 사용할 수 없기 때문에 createPostWithParameters가 값을 반환하기 전에 호출합니다. 난, 당신은 postHashtagsToDB 및 다른 스레드에서 다른 스레드에서 완료 블록 처리기 안에 몇 초 지연과 함께 호출해야 createPostWithParameters가 값을 반환 할 수 있습니다. 희망이 도움이 될 수 있습니다. – ldindu
예, 오류가 없습니다. –