2013-06-04 66 views
0

我正在構建一個核心數據應用程序,並需要基於它們的日期來獲取對象。如果這些對象的日期與全局「selectedDate」同日,則這些對象將顯示在UITableView中,用戶可以更改並可能會經常這樣做。造成這種情況的代碼如下:如何使用NSFetchRequest

-(NSDate *)dateByMovingToEndOfDay:(NSDate *)date { 

    unsigned int flags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit; 
    NSDateComponents* parts = [[NSCalendar currentCalendar] components:flags fromDate:date]; 
    [parts setHour:23]; 
    [parts setMinute:59]; 
    [parts setSecond:59]; 
    return [[NSCalendar currentCalendar] dateFromComponents:parts]; 
} 


-(NSDate *)dateByMovingToBeginningOfDay:(NSDate *)date { 

    unsigned int flags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit; 
    NSDateComponents* parts = [[NSCalendar currentCalendar] components:flags fromDate:date]; 
    [parts setHour:0]; 
    [parts setMinute:0]; 
    [parts setSecond:0]; 
    return [[NSCalendar currentCalendar] dateFromComponents:parts]; 
} 

我的問題是哪種方法會更有效:

執行一個每次提取請求用戶更改選擇的日期和使用謂詞只得到它的對象最新的是在同一天selectedDate

或者

抓取在啓動時所有managedObjects,每次用戶更改所選的日期時間排序將它們存儲在一個數組,然後通過數組,創建一個新的僅包含正確對象的陣列

回答

2

選項1,按需預測提取。它可能會(可能)需要更長的時間來處理,但隨着您的應用程序的增長和對象數量的增長,按需提取方法將會擴展得更好,並且不會導致應用程序崩潰(內存不足)。

考慮使用NSFetchedResultsController並設置NSFetchRequestfetchBatchSize

相關問題