Я создаю приложение задач, которое должно поддерживать автономный режим. Я использовал RestKit для загрузки задач и сопоставил их в локальных данных Core.
Это работает в режиме онлайн. Но в оффлайне есть странная проблема. Я использую NSPredicate для извлечения данных из локального хранилища. Для этого я использую магические записи.
+ (void)getIdeasTasksWithPageNo:(int)pageNo completionHandler:(void (^)(NSArray *, NSError *))completionHandler {
NSArray *tasks = [self MR_findAllWithPredicate:[NSPredicate predicateWithFormat:@"due_date = nil AND user_id = %@", [DBUsers currentUser].id]];
completionHandler(tasks, nil);
}
И я называю это следующим образом:
[DBTasks getIdeasTasksWithPageNo:1 completionHandler:^(NSArray *tasks, NSError *error) {
if (!error) {
[self displayTasksWithResults:tasks forPageNo:1];
} else {
NSLog(@"Error is %@", error);
}
}];
И вот как я показываю его в UITableView
-(void)displayTasksWithResults:(NSArray *)tasks forPageNo:(int)pageNo {
if (!self.tasksArray) {
self.tasksArray = [[NSMutableArray alloc] init];
} else {
[self.tasksArray removeAllObjects];
}
[self.tasksArray addObjectsFromArray:tasks];
[self.tableview reloadData];
}
Это работает только в первый раз, и все задачи заполняются в UITableView
.
Проблема возникает после заполнения UITableView
, все записи в self.tasksArray
становятся Null
. Если я прокручиваю UITableView
, строки таблицы начинают пуст.
Но если я печатаю self.tasksArray
в методе displayTasksWithResults
, он отлично отпечатывается.
(
"Title: Task 01",
"Title: You've gone incognito. Pages you view in incognito tabs won't stick around in your browser history, cookie store, or search history after you've closed all of your incognito tabs. Any files you download or bookmarks you create will be kept. ",
"Title: Task 06",
"Title: Task 04",
"Title: Hi",
"Title: Task 3",
"Title: Task 4",
"Title: Hi 4",
"Title: hh",
"Title: Task 02",
"Title: Task 05\n",
"Title: Task 4",
"Title: Task 5",
"Title: Task 2 updated",
"Title: Here is a task. ",
"Title: Task 03",
"Title: Hi 3",
"Title: Task 2",
"Title: Hi 2",
"Title: Testing task email with Idea Task",
"Title: Task f6",
"Title: 1.117",
"Title: Task f5",
"Title: Task f12",
"Title: Task f4",
"Title: Task f3",
"Title: 111.0.113",
"Title: 111.0.115",
"Title: Pages you view in incognito tabs won't stick around in your browser history, cookie store, or search history after you've closed all of your incognito tabs. Any files you download or bookmarks you create will be kept.",
"Title: Task f7",
"Title: 1.116",
"Title: 1.118",
"Title: Going incognito doesn't hide your browsing from your employer, your internet service provider, or the websites you visit. ",
"Title: 111.0.111"
)
Если я напечатаю self.taskArray
позже, может быть в делегате didSelectRow
UITableView
, он печатает, как показано ниже:
(
"Title: (null)",
"Title: (null)",
"Title: (null)",
"Title: (null)",
"Title: (null)",
"Title: (null)",
"Title: (null)",
"Title: (null)",
"Title: (null)",
"Title: (null)",
"Title: (null)",
"Title: (null)",
"Title: (null)",
"Title: (null)",
"Title: (null)",
"Title: (null)",
"Title: (null)",
"Title: (null)",
"Title: (null)",
"Title: (null)",
"Title: (null)",
"Title: (null)",
"Title: (null)",
"Title: (null)",
"Title: (null)",
"Title: (null)",
"Title: (null)",
"Title: (null)",
"Title: (null)",
"Title: (null)",
"Title: (null)",
"Title: (null)",
"Title: (null)",
"Title: (null)"
)
Я думаю, что это может быть связано с NSManagedObjectContext
, но не знаю, как это исправить.
Пожалуйста, помогите!