3 개의 가져 오기 컨트롤러를 사용하여 3 개의 작업 목록을 필터링합니다. 오늘, 내일, 그리고 마지막으로 나중에 할 일. 이 경우 세 가지 조건이 있습니다.iOS - NSFetchedResultsController 업데이트
NSPredicate *todayPredicate = [NSPredicate predicateWithFormat:@"(date <= %@) AND isDone == 0",
[self getEndDateForDay:P_Section_Today]];
NSPredicate *tomorrowPredicate = [NSPredicate predicateWithFormat:@"((date >= %@) AND (date <= %@)) AND isDone == 0",
[self getStartDateForDay:P_Section_Tomorrow],
[self getEndDateForDay:P_Section_Tomorrow]];
NSPredicate *laterPredicate = [NSPredicate predicateWithFormat:@"date >= %@ AND isDone == 0",
[self getStartDateForDay:P_Section_Later]];
나는 그것을 만족스럽게 생각합니다. 그것은 매력처럼 작동했습니다. 밤이 지나기 전까지는 다음과 같은 문제에 직면했습니다. 3 개의 컨트롤러는 업데이트되지 않습니다.
예 : - 일요일에 앱을 시작했습니다. (자, 오늘은 일요일입니다.) - 앱이 아직 실행 중입니다. - 월요일 아침에 앱을 열었습니다. - 월요일에 새로운 작업이 추가되었습니다. 그것은 오늘의 일에서 나타날 것입니다, 맞습니까? 아니오!, 내일의 작업에 나타납니다. 앱을 배경에서 종료하고 다시 시작하는 것을 제외하고는 그 어떤 문제도 해결할 수 없습니다.
나는 performFetch
이 술어와 함께 가져 오기 컨트롤러를 업데이트한다고 생각했지만 그렇지 않습니다. 그 문제가 수정 되었습니까?
그래서 매 초마다 날짜 변경 사항을 추적해야합니까? –
@ShatouDev 글쎄, 꼭 그렇지는 않습니다. 예를 들어, 술어를 만들 때 현재 날짜를 저장할 수 있습니다. 그런 다음 응용 프로그램이 수면이나 배경에서 다시 활성화 될 때 날짜가 변경되었는지 항상 확인하십시오. 사용자가 자정에 앱을 활발하게 사용하고있을 때 실시간으로 업데이트해야하는 경우 타이머를 적극적으로 폴링하는 대신 자정에 타이머를 설정할 수 있습니다. (또한 사용자 인터페이스가 작동하는 방법을 고려하십시오. 사용자가 뭔가를하고 있다면 자동으로 새로 고치는 것이 좋지 않을 수 있습니다. 날짜 확인을 할 수있는 작업이 있습니까?) – Arkku
개인적으로 나는 백그라운드/수면에서 앱 활성화에 대한 날짜, 그리고 사용자가 어쨌든 업데이트를 유발하는 작업을 수행 할 때 (예 : 작업 생성/삭제/수정). – Arkku