循环通过核心数据关系

时间:2015-11-14 19:30:04

标签: ios swift core-data

在我的calendarViewController中,我想准备一个包含日期的数组。在我的模型中,我必须与之关系,其中一种药可以有多个服用药丸的日期。如何通过此集执行循环以附加数组? 我的模特:

extension Medicine {

@NSManaged var amount: String?
@NSManaged var endDate: String?
@NSManaged var name: String?
@NSManaged var time: String?
@NSManaged var notificationSet: NSNumber?
@NSManaged var taken: NSOrderedSet?

}

模特日期

extension Dates {

@NSManaged var date: NSDate?
@NSManaged var takes: Medicine?

}

我想像这样执行循环,但是这些日期我更喜欢来自CoreData的日期:

var dates = [NSDate(timeIntervalSinceNow: 60*60*24*2), NSDate(timeIntervalSinceNow: 60*60*24*3), NSDate(timeIntervalSinceNow: 60*60*24*5), NSDate(timeIntervalSinceNow: 60*60*24*7)]

func calendar(calendar: CKCalendarView!, configureDateItem dateItem: CKDateItem!, forDate date: NSDate!) {


    for dateTaken in dates {
        if calendar.date(date, isSameDayAsDate: dateTaken) {
            dateItem.backgroundColor = UIColor.redColor()
        }
    }

}

1 个答案:

答案 0 :(得分:0)

获取您的Medicine实体,然后像这样创建数组:

let dates = medicine.taken.map { $0.date }

不确定NSOrderedSet往往是错误的,所以我通常会避免它,但您可以尝试附加as! [NSDate]以确保您拥有正确的日期数组。