无法识别完成块 return 类型
Completion block return type not recognized
我正在制作我的第一个完成块,但出于某种原因它无法识别 return 类型,因此我无法将值传回方法调用。
这是我的 header 声明
+(void)downloadVenues:(void (^)(NSArray *myVenues, NSError *error))block;
这是我的实现
+(void)downloadVenues:(void (^)(NSArray *myVenues, NSError *error))block{
//download scenes
PFQuery *query = [PFQuery queryWithClassName:@"Venues"];
[query orderByDescending:@"createdAt"];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (error) {
NSLog(@"Error: %@ %@", error, [error userInfo]);
}
else {
// We found messages!
myVenues = objects;
NSLog(@"Retrieved %lu messages", (unsigned long)[myVenues count]);
}
}];
这里在另一个文件中调用它
//download venues
[Venue downloadVenues:^(NSArray *myVenues, NSError *error){
if (error) {
NSLog(@"Error: %@ %@", error, [error userInfo]);
}
else {
NSLog(@"myObjects are: %@", myVenues);
_venues = myVenues;
[self loadAnnotations];
}
}];
出于某种原因,它无法在实现中识别 myVenues。为什么以及如何解决这个问题?谢谢
您的实现从不调用完成块。
这是你应该做的:
+(void)downloadVenues:(void (^)(NSArray *myVenues, NSError *error))block{
//download scenes
PFQuery *query = [PFQuery queryWithClassName:@"Venues"];
[query orderByDescending:@"createdAt"];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (error) {
NSLog(@"Error: %@ %@", error, [error userInfo]);
block(nil, error);
}
else {
// We found messages!
block(objects, nil);
NSLog(@"Retrieved %lu messages", (unsigned long)[myVenues count]);
}
}];
我正在制作我的第一个完成块,但出于某种原因它无法识别 return 类型,因此我无法将值传回方法调用。
这是我的 header 声明
+(void)downloadVenues:(void (^)(NSArray *myVenues, NSError *error))block;
这是我的实现
+(void)downloadVenues:(void (^)(NSArray *myVenues, NSError *error))block{
//download scenes
PFQuery *query = [PFQuery queryWithClassName:@"Venues"];
[query orderByDescending:@"createdAt"];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (error) {
NSLog(@"Error: %@ %@", error, [error userInfo]);
}
else {
// We found messages!
myVenues = objects;
NSLog(@"Retrieved %lu messages", (unsigned long)[myVenues count]);
}
}];
这里在另一个文件中调用它
//download venues
[Venue downloadVenues:^(NSArray *myVenues, NSError *error){
if (error) {
NSLog(@"Error: %@ %@", error, [error userInfo]);
}
else {
NSLog(@"myObjects are: %@", myVenues);
_venues = myVenues;
[self loadAnnotations];
}
}];
出于某种原因,它无法在实现中识别 myVenues。为什么以及如何解决这个问题?谢谢
您的实现从不调用完成块。 这是你应该做的:
+(void)downloadVenues:(void (^)(NSArray *myVenues, NSError *error))block{
//download scenes
PFQuery *query = [PFQuery queryWithClassName:@"Venues"];
[query orderByDescending:@"createdAt"];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (error) {
NSLog(@"Error: %@ %@", error, [error userInfo]);
block(nil, error);
}
else {
// We found messages!
block(objects, nil);
NSLog(@"Retrieved %lu messages", (unsigned long)[myVenues count]);
}
}];