正在学习Leancloud,想用一个工厂方法来封装查询代码,但是不能return block里的值,直接return objectID是空值,求指教,谢谢!
+ (NSString *)getObjectIDbyUsername:(NSString *)_username
{
__block NSString *objectID = NULL;
NSString *username = [NSString stringWithFormat:@"^%@$",_username];
AVQuery *query = [AVQuery queryWithClassName:@"_User"];
[query whereKey:@"username" containsString:username];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
objectID = [objects valueForKey:@"objectId"];
}];
return objectID;
}
비동기식:
으아악동기화:
으아악팩토리 메소드의 모양을 블록에 추가하고 블록 콜백 objectID를 추가합니다
dispatch_semaphore_t, 기다리기 전에 돌아오세요.
Swift를 사용한다면 @escaping 블록이 GCD 그룹을 가질 자격이 있습니다. .