首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CoreData -一对多的关系

CoreData -一对多的关系
EN

Stack Overflow用户
提问于 2015-08-14 15:14:39
回答 1查看 120关注 0票数 1

我将发布下面的代码,然后解释我的奋斗

此函数节省一天(如星期日、星期一、星期二等):

代码语言:javascript
复制
func appendDaysToArray() {
        let dayLabel = dayName.text
        daysArray.append(dayLabel)

        let dayEntity = NSEntityDescription.entityForName("TrainingDay", inManagedObjectContext: moc!)
        let trainingday = TrainingDay(entity: dayEntity!, insertIntoManagedObjectContext: moc)
        trainingday.day = dayName.text

        var error: NSError?
        moc?.save(&error)

        if let err = error {
            var status = err.localizedFailureReason
            println("\(status)")
        } else {
            println("Day #\(dayName.text) saved successfully!")
        }
    }

这一条将细节保存为一个名字、若干组和多次重复(比如体操练习):

代码语言:javascript
复制
func appendTrainingDetails () {

        let nameLabel = exerciseName.text
        namesArray.append(nameLabel)
        let numberOfSets = setsNumber.text?.toInt()
        setsArray.append(numberOfSets!)
        let numberOfReps = repsNumber.text?.toInt()
        repsArray.append(numberOfReps!)

        let detailsEntity = NSEntityDescription.entityForName("TrainingDetails", inManagedObjectContext: moc!)
        let trainingdetails = TrainingDetails(entity: detailsEntity!, insertIntoManagedObjectContext: moc)
        trainingdetails.exerciseName = exerciseName.text
        trainingdetails.setsNumber = setsNumber.text!
        trainingdetails.repsNumber = repsNumber.text!


        var error: NSError?
        moc?.save(&error)

        if let err = error {
            var status = err.localizedFailureReason
            println("\(status)")
        } else {
            println("Exercise: #\(exerciseName.text) saved successfully!")
            println("Number of sets: #\(setsNumber.text) saved successfully!")
            println("Number of reps: #\(repsNumber.text) saved successfully!")
        }
    }

我的应用程序运行良好,但我真正需要的是:每天,我将拥有多个exerciseNames、setsNumber和repsNumber。我建立了一对多的关系,但我不知道如何将TrainingDetails归因于daysArray中的每一天。

以下是我的两个模特:

代码语言:javascript
复制
import Foundation
import CoreData

class TrainingDay: NSManagedObject {

    @NSManaged var day: String
    @NSManaged var relationship1: NSSet

}

代码语言:javascript
复制
import Foundation
import CoreData

class TrainingDetails: NSManagedObject {

    @NSManaged var exerciseName: String
    @NSManaged var repsNumber: String
    @NSManaged var setsNumber: String
    @NSManaged var relationship2: TrainingDay

}

稍后,我将有一个按钮为每一天,当按下,他们将更新一个tableView的练习列表,为特定的一天。所以我需要建立一对多的关系。

我怎样才能做到这一点?

对任何错误感到抱歉。提前谢谢!!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-14 15:49:03

您想要做的事情的文档是在这个链接中,标题为“to -多关系”。

下面是一个简短的例子。首先,我建议把你的人际关系的名称改为更直观的东西。它真的会有帮助:

代码语言:javascript
复制
class TrainingDay: NSManagedObject {
    @NSManaged var day: String
    @NSManaged var trainingDetails: NSSet
}

class TrainingDetails: NSManagedObject {
    // ... other stuff here
    @NSManaged var trainingDay: TrainingDay
}

确保您对代码所做的任何更改也在模型图中进行。确保将关系配置为模型图中彼此的逆关系。

您可以为给定的TrainingDay设置如下所示的TrainingDetails

代码语言:javascript
复制
// This assumes you've created a TrainingDay called "trainingDay1", and a 
// TrainingDetails object called "details".
details.trainingDay = trainingDay1

核心数据还负责创建逆关系,因此trainingDay1对象将自动向其trainingDetails集添加details

如果试图将对象添加到trainingDetails集中的TrainingDay中,则需要使用我链接到的文档中描述的mutableSetValueForKey:方法。基本上,看起来是这样的:

代码语言:javascript
复制
var details = trainingDay1.mutableSetValueForKey("trainingDetails")
details.addObject(newTrainingDetails)

mutableSetValueForKey:创建代理对象。对它返回的集合所做的任何更改在您要修改的集合上都是有效的。

希望这能有所帮助!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32013330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档