正在学习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;
}
非同期:
リーリー同期:
リーリーファクトリ メソッドのシェイプをブロックに追加し、ブロック コールバック オブジェクト ID
dispatch_semaphore_t、戻る前に待ちます。
Swift を使用する場合は、GCD グループを持つ必要があります。@escaping ブロックがそれを行います。 。