正在学习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;
}
Asynchrone :
Synchronisation :
Ajouter la forme de la méthode d'usine à un bloc et l'ID d'objet de rappel du bloc
dispatch_semaphore_t, attendez avant de retourner.
Vous méritez d'avoir un groupe GCD. Si vous utilisez Swift, un bloc @escaping le fera. .