gpt4 book ai didi

ios - Filter CoreData(父实体和子实体)

转载 作者:行者123 更新时间:2023-11-28 22:04:16 26 4
gpt4 key购买 nike

这两天我一直在尝试过滤 CoreData,但仍然卡住了。这是我的模型:

Users < --- >> Sessions

我设法在新 session 和特定用户之间创建了关系。我还设法通过以下代码获取所有用户的列表以在表格 View 中显示它们:

NSFetchRequest *request = [[NSFetchRequest alloc]init];
NSEntityDescription *usersDescription= [NSEntityDescription entityForName:@"Users" inManagedObjectContext:_managedObjectContext];
[request setEntity:usersDescription];

NSError *error = nil;
NSMutableArray *mutableFetchresults = [[_managedObjectContext executeFetchRequest:request error:&error]mutableCopy];
if(mutableFetchresults == nil) {
//handle error
}

usernameDataMutableArray = [[NSMutableArray alloc]init];
for (int i = 0; i< [mutableFetchresults count]; i++)
{ Users* users = (Users *) [mutableFetchresults objectAtIndex:i];
[usernameDataMutableArray insertObject: [users username] atIndex:i];
}

现在,当我触摸一个名为“Username1”的单元格时,我会显示一个新的 tableView。我想在此 tableView 中显示所有 Username1 session 。

所以我的问题是:如何过滤我的所有 session 以检索属于 Username1 的 session ?

最佳答案

不需要过滤器。

当您推送新的 View Controller 时,您将移交所选的 Users 实例。然后在新的 View Controller 中,您向 Users 的实例询问与其关联的 Sessions 实例。

NSSet *sessionsSet = [myUser valueForKey:@"sessions"];

如果您设置了子类,您也可以使用属性。

这就是 Core Data 的重点。它是一个对象图,关系是对象实例的属性。只需调用适当的方法即可。

我强烈建议您阅读一本关于 Core Data 的书,因为它会解决您在使用这些基本概念时遇到的许多问题。

补充意见

实体不应以复数形式命名。您的实体应称为 UserSession 而不是它们的复数形式。指向一对多的关系的名称应该是复数,指向一对一的名称应该是单数。这对代码的清晰度和可维护性有很大帮助。复数倾向于表示对象的集合,而不是像现在这样的单个对象。

关于ios - Filter CoreData(父实体和子实体),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24395095/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com