2014-02-13 59 views
1

我想執行一個提取請求來返回一個「鍛鍊」用戶對象。Stackmob不會執行提取請求沒有任何錯誤

我需要在多個控制器中使用這種方法,所以我將它移到了它自己的類中。但是,當我將以下方法從控制器移動到另一個類時onSuccessonFailure從不執行 - 它只是返回一個沒有任何錯誤的空數組。我曾嘗試將managedObjectContext作爲參數,以防與此有關。

self.managedObjectContext = [[self.appDelegate coreDataStore] 
contextForCurrentThread]; 

類中的方法聲明爲:

managedObjectContext的聲明

-(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; 

}

爲什麼不onSuccessonFailure正在執行?

回答

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); 
}]; 

}

現在,當你調用這個函數時,你可以使用你的結果完成。

相關問題