【问题标题】:Using a Core Data data model to instantiate new objects使用 Core Data 数据模型来实例化新对象
【发布时间】:2011-07-22 18:26:43
【问题描述】:

基本上,我有这个 iphone 应用程序,它从应用程序 sqlite 数据库(来自实体:模块)中获取有关不同模块(学生学习的科目)的数据,并将它们显示在 uitableview 中。当您单击一个单元格时(表示一个模块),它会推送一个包含模块详细信息的视图控制器。

'Module' 属性: name = 模块名称,body = 用户可以为模块保存的注释。

我添加了一个评估实体,它的属性是:

'Assessment' 属性: type = 考试或作业,name = 作业名称,data = 到期日期

我想做的是:

  1. 询问用户他们对特定模块进行了多少次评估(例如“您对‘模块 a’进行了多少次评估?”
  2. 然后用户会说出一个数字(例如 3),然后应用程序应该以某种方式添加例如3,评估并在模块视图页面中显示每个评估的信息(即文本字段等)(当用户选择模块时会推送)

如果有人可以提供帮助,将不胜感激。如果我的解释有点混乱,也很抱歉。

【问题讨论】:

  • 您能否详细说明您已经尝试过的方法以及哪些方法(如果有的话)不起作用?
  • 1 我可能会弄清楚该怎么做.. 因此并不那么重要.. 它只是为了让您了解应用程序从哪里获得评估数量.. 但是第 2 位似乎很棘手..我很难理解我将如何自动生成(例如)3个实体我没有尝试过任何事情,因为我不知道该怎么做..
  • 我可以建议您将标题更改为“使用 Core Data 数据模型实例化新对象”(如果我理解正确的话)吗?
  • 我唯一的指针是查看Apple的文档here,它说:您通常使用NSEntityDescription的便捷方法insertNewObjectForEntityForName:inManagedObjectContext:创建托管对象,该方法返回正确初始化的实例您指定的实体的正确类,插入到托管对象上下文中。 (developer.apple.com/library/ios/#DOCUMENTATION/DataManagement/…)
  • 最后,看看这个问题,可能是同一个问题:stackoverflow.com/questions/1738676/…

标签: iphone core-data attributes entity datamodel


【解决方案1】:

首先,您要将反向关系从评估放回模块。

然后你可以创建模块对象,

for(int i=0;i<userInputValue;i++){
    AssessmentObject *anAssessment=     [NSEntityDescription insertNewObjectForEntityForName:@"Assesment" inManagedObjectContext:self.managedObjectContext];
    [anAssessment setDate:[NSDate date]];
    [anAssessment setName:@"Untitled module"];
    [anAssessment setModule:self.currentModule];

} 

一旦它们被分配,那么您需要将它们推送到模态视图以控制输入

ModalViewController *aModalViewController=[[ModalViewController alloc] init];
aModalViewController.assessmentSet = [self.currentModule assessments];
[self.navigationController pushModalViewController:aModalViewController animated:YES];

然后您需要设置 modalViewController 以允许编辑集合中的对象。也许是一些下一个/上一个按钮,然后在关闭时让它保存上下文。

【讨论】:

  • 我的看法是,一个模块可以有很多评估。所以我想它会是:模块“一对多”评估..那是正确的吗?这和你的反向关系一样吗? p.s.谢谢你的回答:)
  • 您已经正确设置了一对多关系,会有一个包含许多评估的模块,但是为了核心数据的内部保存以及您自己的方便,您希望设置这样您就可以找出哪个模块拥有评估,这将是反比关系。
  • 我已经编辑了答案以显示您应该如何设置实体。希望这会有所帮助。
  • 谢谢你的帮助 :) 我会试试这个,让你知道会发生什么
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多