Valeur de retour pour la fonction dans un bloc
Je suis en utilisant AFNetworking pour obtenir des données à partir d'un serveur:
-(NSArray)some function {
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request
success: ^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
NSArray *jsonArray =[JSON valueForKey:@"posts"];
}
failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {}
}
Donc ce que je suis en train de faire ici, c'est le retour de l'jsonArray à la fonction. Évidemment, le retour n'est pas de travail.
source d'informationauteur BlackM
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas utiliser l'achèvement de Bloc pour créer une valeur de retour de votre méthode. Le
AFJSONRequestOperation
fait son travail de manière asynchrone.someFunction
va revenir alors que l'opération est toujours en marche. Le succès et l'échec Blocs sont comment vous obtenez les valeurs résultantes où ils doivent aller.Une option ici est de passer en l'appelant comme un argument de votre enveloppe méthode de manière à ce que la fin du Bloc à la main le tableau off.
Vous pouvez aussi faire votre appelant créer et passer d'un Bloc à exécuter sur la réussite. Puis
goFetch:
n'a plus besoin de savoir ce que les propriétés existent sur l'appelant.Comme d'autres l'ont dit, vous ne pouvez le faire que lorsque vous traitez avec de l'appel asynchrone. Au lieu de retourner le Tableau prévu, vous pourriez passer un achèvement bloc comme un paramètre
Alors d'où vous appeler que someFunction. Ce code permettra également de faire une erreur de manipulation pour vous.
j'ai été confronté à ce genre de problème et de le résoudre par cette méthode ci-dessous.
J'ai vu les réponses ci-dessus à l'aide de blocs. Mais cette solution était plus approprié pour le moment.
La logique de la méthode est simple. Vous avez besoin d'envoyer l'objet et sa méthode comme un paramètre et après la requête terminée, cette méthode sera appelée.
Espérons que cela aide.