Return 来自异步 BLOCK 的 NSArray 函数

Return NSArray function from asynchronous BLOCK

我有一个函数必须有这个签名并且必须return一个测试对象数组

+ (NSArray <Test *>*_Nullable) getAllDetails

在函数中,我正在使用 RESTKIT 异步执行 GET 请求,它成功地从远程 REST API 获取数据并保存到我在此处 return 的数组中。因为当我在其他地方用 [MyClass getAllDetails]; 函数调用 class 时,块之前的函数 returns 已经执行,所以我的测试对象数组为 nil 但是当我在调用中登录时,数组被填充.有一段时间我已经完成了一些 OJB-C 和块。

如果您异步获取数据,这是一种错误的方法,您应该使用块方法或创建委托方法来处理响应。

你可以试试这样的块方法

//Declare your block like this in your class
typedef void (^GetAllRequestBlock)(NSArray <Test *>*_Nullable);

并在您的函数中使用它,例如:-

+ (void)getAllDetails:(GetAllRequestBlock)completionHandler{
    BOOL response = true; // Your api response check
    if (response) {
        if completionHandler{
            completionHandler(Array); // Pass your array custom array that you've defined in the block
        }
    }else{
        if completionHandler{
            completionHandler(nil);
        }
    }
}