2016-03-21 22 views
-2

Uzun bir çalışma işlemini çağıran bir yöntem var. uzun süren işlem ve kendisinin blokları kullanan ve başarı bloğu ve hata bloğunu döndüren AFNetworking'i kullanıyorum. Bu yüzden, yöntemimi test etmeye çalışıyorum ve başarı bloğu çağrılmadan önce testler başarısız olacak. Benim de yöntemimi blokları kullanmak için almaya çalışacağımı düşündüm. Blokları kullanmak için değiştirmeyi başardığım başka bir yöntem var ancak bool sadece bitmiş ve dönüş değeri geçersiz. NSDecimalNumber * döndürmek için zor olan yöntem ve bir NSString alır.Amaçlar-c yöntemi, blokları kullanmak

yöntem imza

  • (NSDecimalNumber *) getRate: (NSString *) rateCode;

I AFNetworking yöntemi

Ayrıca içinde yöntemini ve mümkün istiyorum başarı blok girdiğinde ayarlanmış bir BOOL bir tamamlama blok eklemek mümkün mümkün istiyorum tamamlanma bloğu,

İade edilen NSDecimalNumber * değerine erişiyor mu? Eğer öyleyse, lütfen bana nasıl ayrıldığını gösteriniz

+0

Bu olabilir ... gibi görünür yardım http://goshdarnblocksyntax.com – nielsbot

+0

"get" ile önek yöntemleri yok . – bbum

cevap

3

.

- (void)fetchRate:(NSString*)rateCode completion:(void (^)(NSDecimalNumber *))completion; 

Sonra böyle diyoruz:

Bir tamamlama bloğu alır fetchRate: yöntemi olabilir

void (^completion)(NSDecimalNumber *) = ^(NSDecimalNumber * rate){ 
    // this is called when rate is returned from your webservice 
} 

// call fetchRate: now, results will arrive later... 
[ myObj fetchRate:<rate code> completion:completion ]; 

// code here runs immediately; the results come back later. 

-fetchRate:

- (void)fetchRate:(NSString *)rateCode completion:(void (^)(NSDecimalNumber *))completion 
{ 
    void (^asiCompletionBlock)(/*args*/) = ^(/*...args...*/){ 
     // called after ASI request completes 

     NSDecimalNumber * answer = /* get answer from ASI HTTP response */ 

     // call our completion block that was passed in: 
     completion(answer); 
    }; 

    // do your asi HTTP request here, pass asiCompletionBlock for completion arg 
} 
+0

... ve buna "fetchRate" veya buna benzer bir şey [değil "** get ** Rate"] (https://developer.apple.com/library/mac/documentation/General/Conceptual/DevPedia-CocoaCore /AccessorMethod.html). –

+0

iyi nokta, cevabımı güncelledim. – nielsbot

+0

Tamam, ancak getiri için çağrıda sorun var –