我有一个必须具有此签名并且必须返回Test对象数组的函数
+ (NSArray <Test *>*_Nullable) getAllDetails
在函数中,我正在使用RESTKIT异步执行GET请求,该请求从远程REST API成功获取数据并将其保存到我在这里返回的数组中。因为当我使用[MyClass getAllDetails];
函数在其他地方调用该类时,该函数将在执行块之前返回,所以我的Test对象数组为nil,但是当我在该调用中登录时,将填充该数组。一段时间以来,我已经完成了一些OJB-C和块操作。
答案 0 :(得分:1)
如果您异步获取数据,则应该使用块方法或创建委托方法来处理响应,这是错误的方法。
您可以尝试使用这种阻止方法
//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);
}
}
}