Stackmob 不执行 fetch 请求而没有任何错误
Posted
技术标签:
【中文标题】Stackmob 不执行 fetch 请求而没有任何错误【英文标题】:Stackmob does not execute fetch request without any errors 【发布时间】:2014-02-13 10:09:52 【问题描述】:我正在尝试执行获取请求以返回“锻炼”用户对象。
我将在多个控制器中需要此方法,因此我已将其移至它自己的类中。但是,当我将以下方法从控制器移动到另一个类 onSuccess
或 onFailure
时,它永远不会执行 - 它只是返回一个空数组而没有任何错误。我尝试将managedObjectContext
作为参数放入,以防与此有关。
managedObjectContext
声明为:
self.managedObjectContext = [[self.appDelegate coreDataStore]
contextForCurrentThread];
类中的方法声明为:
-(NSArray*)getUserRecord:(NSManagedObjectContext *)managedObjectContext
NSFetchRequest *userFetch = [[NSFetchRequest alloc] initWithEntityName:@"User"];
[managedObjectContext executeFetchRequest:userFetch
onSuccess:^(NSArray *results)
NSLog(@"Results %@", results);
self.fetchedRecordsArray= [[NSMutableArray alloc] initWithArray:results];
NSLog(@"Fetched Array %@", self.fetchedRecordsArray);
onFailure:^(NSError *error)
NSLog(@"DATABASE ERROR: %@", error);
[[[UIAlertView alloc]initWithTitle:@"DATABASE ERROR" message:@"FATAL-unable to fetch workout object" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] show];
];
return self.fetchedRecordsArray;
为什么onSuccess
或onFailure
没有被执行?
【问题讨论】:
【参考方案1】:当您的函数返回时,您的 self.fetchedRecordsArray 将始终为零,因为块性质。
尝试执行以下操作:
在.h文件中这样声明:
- (void)getUserRecordWithContext:(NSManagedObjectContext *)managedObjectContext
success:(void (^)(NSArray * users))success
failure:(void (^)(NSError * error))failure;
以及.m文件中的实现:
- (void)getUserRecordWithContext:(NSManagedObjectContext *)managedObjectContext
success:(void (^)(NSArray * users))success
failure:(void (^)(NSError * error))failure;
NSFetchRequest *userFetch = [[NSFetchRequest alloc] initWithEntityName:@"User"];
[managedObjectContext executeFetchRequest:userFetch
onSuccess:^(NSArray *results)
NSLog(@"Results %@", results);
self.fetchedRecordsArray= [[NSMutableArray alloc] initWithArray:results];
NSLog(@"Fetched Array %@", self.fetchedRecordsArray);
success(results);
onFailure:^(NSError *error)
NSLog(@"DATABASE ERROR: %@", error);
failure(error);
];
现在,当您调用此函数时,您可以在完成时使用您的结果。
【讨论】:
以上是关于Stackmob 不执行 fetch 请求而没有任何错误的主要内容,如果未能解决你的问题,请参考以下文章
如何在fetch then / response函数中访问请求对象
如何在本地使用 fetch 从客户端向服务器发出请求而不会得到不透明的响应?