Ios 快速-获得一对多关系

Ios 快速-获得一对多关系,ios,swift,core-data,one-to-many,fetchrequest,Ios,Swift,Core Data,One To Many,Fetchrequest,假设我们有两个实体: -人员(姓名、年龄等) -房子(颜色) 我们用house.addToPeople(newPeople)记录了每家每户的几次数据 我们想把房子里所有的人都涂成蓝色 我们怎么取这个 我试过这个代码,但它能吸引所有的人 let appD = UIApplication.shared.delegate as! AppDelegate let context = appD.persistentContainer.viewContext

假设我们有两个实体:

-人员(姓名、年龄等)

-房子(颜色)

我们用
house.addToPeople(newPeople)
记录了每家每户的几次数据

我们想把房子里所有的人都涂成蓝色

我们怎么取这个

我试过这个代码,但它能吸引所有的人

        let appD = UIApplication.shared.delegate as! AppDelegate
            let context = appD.persistentContainer.viewContext
        
        
        let peopleFetch = NSFetchRequest<NSFetchRequestResult>(entityName: "People")

        let houseFetch = NSFetchRequest<NSFetchRequestResult>(entityName: "House")               
        houseFetch.fetchLimit = 1       
        houseFetch.predicate = NSPredicate(format: "color = %@", "blue")
    
        ...
        
        let res = try? context.fetch(peopleFetch)
        let resultData = res as! [People]
让appD=UIApplication.shared.delegate为!AppDelegate
让context=appD.persistentContainer.viewContext
let peopleFetch=NSFetchRequest(entityName:“人”)
let houseFetch=NSFetchRequest(entityName:“House”)
houseFetch.fetchLimit=1
houseFetch.predicate=NSPredicate(格式:“颜色=%@”,“蓝色”)
...
让我们试试?context.fetch(peopleFetch)
让resultData=resas![人]

如何执行此操作?

尝试此功能。它所做的是获取所有人并创建一个包含所有结果的数组

func getAllItems()->[People]?{
let request=NSFetchRequest(entityName:“人”)
request.returnsObjectsAsFaults=false
做{
让结果:NSArray=try context.fetch(请求)作为NSArray
返回(结果为?[人])!
}捕捉错误{
打印(“Errore RECEPERO INFORMIZIONI dal context\n\(错误)”)
}
归零
}
如果要按照特定条件(如颜色)执行搜索,请在
请求后使用以下代码:

//我在这里按索引搜索,如果您需要案例指导,请不要犹豫询问
request.predicate=NSPredicate(格式:“index=%d”,currentItem.index)
编辑:实际上,上面的代码只是为了获取所有的人,如果你想根据房子进行搜索,请执行以下操作:

func retrieve()->[人]{
//把所有有特定名字的房子都拿来
let houseRequest=NSFetchRequest(entityName:“House”)
houseRequest.predicate=NSPredicate(格式:“name=%@”,“newName”)//此seearch按名称命名
houseRequest.returnsObjectsAsFaults=false
做{
//将获取的项目放入数组中
let result:NSArray=try context.fetch(houseRequest)作为NSArray
出租房屋=结果为?[房屋]
//从上一个数组中获取人员
让人:[人]?=(houses.people!.allObjects as![人])
返回人
}捕捉错误{
打印(“Errore RECEPERO INFORMIZIONI dal context\n\((错误)))
}
归零
}

试试这个功能。它所做的是获取所有人并创建一个包含所有结果的数组

func getAllItems()->[People]?{
let request=NSFetchRequest(entityName:“人”)
request.returnsObjectsAsFaults=false
做{
让结果:NSArray=try context.fetch(请求)作为NSArray
返回(结果为?[人])!
}捕捉错误{
打印(“Errore RECEPERO INFORMIZIONI dal context\n\(错误)”)
}
归零
}
如果要按照特定条件(如颜色)执行搜索,请在
请求后使用以下代码:

//我在这里按索引搜索,如果您需要案例指导,请不要犹豫询问
request.predicate=NSPredicate(格式:“index=%d”,currentItem.index)
编辑:实际上,上面的代码只是为了获取所有的人,如果你想根据房子进行搜索,请执行以下操作:

func retrieve()->[人]{
//把所有有特定名字的房子都拿来
let houseRequest=NSFetchRequest(entityName:“House”)
houseRequest.predicate=NSPredicate(格式:“name=%@”,“newName”)//此seearch按名称命名
houseRequest.returnsObjectsAsFaults=false
做{
//将获取的项目放入数组中
let result:NSArray=try context.fetch(houseRequest)作为NSArray
出租房屋=结果为?[房屋]
//从上一个数组中获取人员
让人:[人]?=(houses.people!.allObjects as![人])
返回人
}捕捉错误{
打印(“Errore RECEPERO INFORMIZIONI dal context\n\((错误)))
}
归零
}

谢谢您的回答

在本例中,“houses”是一个数组,因此我们必须添加一个索引➔ <代码>房屋[0]。人员!。所有对象


非常感谢您的解释。

谢谢您的回答

在本例中,“houses”是一个数组,因此我们必须添加一个索引➔ <代码>房屋[0]。人员!。所有对象


非常感谢您的解释。

执行房屋取回(houseFetch),另一个与此无关,然后使用
people
attribute访问您房屋对象中的人员执行房屋取回(houseFetch),另一个与此无关,然后使用
people
属性访问房子对象中的人物