Core data 从NSSet中获取存储值,而NSSet由于核心数据而变得非常脆弱

Core data 从NSSet中获取存储值,而NSSet由于核心数据而变得非常脆弱,core-data,xcode5,Core Data,Xcode5,实际上,我对iPhone编程还不熟悉,并且已经成功创建了一个应用程序,但我不知道如何检索存储在NSSet中的值。我在核心数据中有两个实体相互关联。用户通过一对多进行评分。Users实体具有firsNname和lastName属性,而Scores实体具有onTime、Was缺席和dateIn属性。我使用基于firstName和lastName的谓词进行提取,然后执行提取。获取成功,我能够在一个获取调用中获取两个实体。但是,我无法从Scores实体获取值。无论我做什么,它总是返回NSSet对象。我要

实际上,我对iPhone编程还不熟悉,并且已经成功创建了一个应用程序,但我不知道如何检索存储在NSSet中的值。我在核心数据中有两个实体相互关联。用户通过一对多进行评分。Users实体具有firsNname和lastName属性,而Scores实体具有onTime、Was缺席和dateIn属性。我使用基于firstName和lastName的谓词进行提取,然后执行提取。获取成功,我能够在一个获取调用中获取两个实体。但是,我无法从Scores实体获取值。无论我做什么,它总是返回NSSet对象。我要做的是检索存储在onTime和wasnaplace属性中的布尔值,并将它们提供给UISwitch

AppDelegate *delegate = [[UIApplication sharedApplication] delegate];
self.managedObject = delegate.managedObjectContext;

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Student"];
    fetchRequest.predicate = [NSPredicate predicateWithFormat:@"firstname == %@ AND lastname == %@", @"James", @"Smith"];

NSError *error = nil;
self.scoresArray = [self.managedObject executeFetchRequest:fetchRequest error:&error];

if ([self.scoresArray count]) {

    Student *student = [self.scoresArray objectAtIndex:0];
    NSSet *score = student.scores;
    NSArray *arr = [score allObjects];
    NSLog(@"%@", [arr objectAtIndex:0]);
}
如果我可以直接访问Score实体,而不是使用NSSet,那么我可以使用点表示法来引用它。
任何帮助都将不胜感激。谢谢

请使用以下内容:

AppDelegate *delegate = [[UIApplication sharedApplication] delegate];
self.managedObjectContext = delegate.managedObjectContext;

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Student"];
    fetchRequest.predicate = [NSPredicate predicateWithFormat:@"firstname == %@ AND lastname == %@", @"James", @"Smith"];

NSError *error = nil;
NSArray *studentArray = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];

for (Student *student in studentArray) {

    Student *student = [self.studentArray objectAtIndex:0];

    NSLog(@" student is %@ %@", student.firstname, student.lastname);

    for (Score *score in student.scores) {
       // Do something with score
      NSLog(@"   score is %@", score);
    }
}

因为学生对分数有很多关系,属性是分数,当你得到学生的分数时,它会返回一个无序集合,这是NSSET的基础。因此,您只需像处理NSSet和集合一样处理它。

感谢您的帮助。我能够检索分数值。然而,我的问题是,当检索值时,它们是在NSSet数据类型中检索的,我需要的是获取布尔类型。您的技术工作了,现在也工作了。我还能够检索布尔值。非常感谢您的支持help@EdwardB. 如果成功了,你应该点击勾号接受答案。我感谢你的帮助。我能够检索分数值。然而,我的问题是,当检索值时,它们的数据类型是NSSet,我需要的是获取布尔类型。是否需要布尔值的集合?您写道,从用户到分数的关系是一种对多关系。这种关系是对多个实体的关系,很少有实体具有接受布尔值的属性。我保存了那些布尔值,但无法将它们作为布尔值检索回来。事实上,我是在Ducan的帮助下得到它的。如果你有一个不同于杜肯所展示的方法,我很乐意看到。谢谢你的帮助。