1
我是CoreData的新手,試圖編寫一個通用函數來查詢數據庫中的信息。我面臨一些問題。正確使用NSFetchRequest
我設置了一個名爲NSError *的私有變量錯誤。我的代碼如下所示:
@interface DatabaseHandler()
{
NSError * error;
}
@end
-(void)queryCoreDataModel:(NSString*)tableName sortBy:(NSArray *)sortArray{
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:tableName];
request.fetchLimit = 20;
request.sortDescriptors = sortArray;
[context executeFetchRequest:request error:&error];
}
它給我這個錯誤:Passing address of non-local object to __autoreleasing parameter for write-back.
但是當我這樣做:
-(void)queryCoreDataModel:(NSString*)tableName sortBy:(NSArray *)sortArray{
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:tableName];
request.fetchLimit = 20;
request.sortDescriptors = sortArray;
NSError *error;
[context executeFetchRequest:request error:&error];
}
它給了我沒有錯誤。這是爲什麼?
由於錯誤消息說,你不能在這裏使用非本地對象(又名實例變量*錯誤)。如果你在代碼的某處再次使用這個實例變量*錯誤,會導致內存泄漏。由於實例變量*錯誤將被覆蓋而未被釋放,如果您在其他地方使用它。 – 2013-03-04 03:29:58