ios - 核心数据: Repeating task

标签 ios objective-c core-data

我正在构建一个具有重复任务功能的待办事项列表。

在核心数据模型中,我有一个二进制属性,用于存储和排列所有重复日期。

    e.g [NSDate date], 
        [NSDate date] + 1 week, 
        [NSDate date] + 2 week, etc... 

所以添加的每个待办事项都会有一个包含重复日期的数组。

我需要查看所有日期(包含在重复日期数组中),如果这些日期中的任何一个是今天的日期,我想获取该待办事项并将其显示在表格 View 中。

我的第一个方法是获取数据库中的所有待办事项,循环抛出所有日期以查看它们是否与今天的日期匹配......但这似乎非常低效,特别是如果数据库包含很多 tods..

这里最好的方法是什么?

谢谢

最佳答案

不是一个真正的答案,但我写了我想象的一个全面的重复事件对象 API 的样子。我认为它很容易实现,你可以很容易地将它保存在 Core Data 中。

// every tuesday and thursday
// every other month
// every first tuesday


@interface Event : NSManagedObject
@property ( nonatomic, copy ) NSDate * when ;
@property ( nonatomic, copy ) NSTimeInterval duration ; // set to 24hrs for all day event

@property ( nonatomic, strong ) NSArray * repeatPatterns ; // array of EventRepeatPattern. (nil/empty means non-repeating)
@property ( nonatomic, copy ) NSDate * endDate ; // when repeats should end

@property ( nonatomic, strong ) NSArray * excludedOccurrences ; // array of Event giving times main event should *not* occur (to allow deleting individual day from repeating schedule)

-(BOOL)occursOnDay:(NSDate*)day ; // does Event have an occurrence on day?

@end

enum EventRepeatWeekdayMask
{
    EventRepeatWeekday_Monday
    , EventRepeatWeekday_Tuesday
    , EventRepeatWeekday_Wednesday
    , EventRepeatWeekday_Thursday
    , EventRepeatWeekday_Friday
    , EventRepeatWeekday_Saturday
    , EventRepeatWeekday_Sunday
} ;

enum EventRepeatOrdinal
{
    EventRepeatOrdinal_First
    , EventRepeatOrdinal_Second
    , EventRepeatOrdinal_Third
    , EventRepeatOrdinal_Fourth
    , EventRepeatOrdinal_Last = -1
} ;

@interface EventRepeatPattern
+(instancetype)every:(NSDateComponents*)interval ;
+(instancetype)on:(EventRepeatWeekdayMask)mask ;
+(instancetype)on:(EventRepeatOrdinal)ordinal weekdays:(EventRepeatWeekdayMask)mask ;

-(BOOL)occursOnDay:(NSDate*)day forEvent:(Event*)event ; // given `event`, does it occur on `day` based on this repeat pattern?

@end

关于ios - 核心数据: Repeating task,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19421811/

相关文章:

ios - Swift:找不到 AVCaptureStillImageOutput 的连接

objective-c - 枚举值 'SHKShareTypeUndefined' 未在开关中处理

ios - CoreData - 是否有更新项目的好方法?

ios - 如何在 Xcode 调试器中记录类名

ios - 控制我的游戏速度?

iphone - Facebook curl like 使用开放图的发布请求

ios - NSFetchedResultsController仅返回一个部分

ios - numberOfItemsInSection的逻辑问题:

iphone - ld : framework not found com. apple.mobileicons

ios - Sublayer 只在 initWithFrame 中创建时绘制,不在 initWithCoder 中绘制