我有一个包含Category,Status和Item实体的模型(由于某种原因,它很大):
我想维护所有具有至少一个状态为“打开”或“购买”的商品的Category对象的NSFetchedResultsController。我进行了广泛的搜索,可以找到大量的CoreData对多关系线程,但是似乎找不到这样的东西。
我需要断言干预-我的当前抛出异常是因为我试图非法使用一对多关系:
SELECT dbo.Users.UserId AS 'userId',
dbo.Users.UserName AS 'firstName',
dbo.Users.Surname AS 'surname',
dbo.Users.Photograph AS 'photograph',
dbo.Users.JobTitle AS 'jobTitle',
dbo.Users.EmailAddress AS 'emailAddress',
dbo.Users.Inactive AS 'inactive',
COUNT(dbo.UserGroups.userId) AS 'teams'
FROM dbo.Users,
dbo.UserGroups
WHERE dbo.Users.UserId = 27
AND dbo.UserGroups.UserId = dbo.Users.UserId
GROUP BY dbo.Users.UserId,
dbo.Users.UserName,
dbo.Users.Surname,
dbo.Users.Photograph,
dbo.Users.JobTitle,
dbo.Users.EmailAddress,
dbo.Users.Inactive
这是我现在的代码(错误的代码,糟糕的!):
'NSInvalidArgumentException', reason: 'to-many key not allowed here'
感谢您的帮助!
答案 0 :(得分:0)
在谓词中使用ANY关键字(如注释中所述)将为您提供一个有效的FetchRequest
,该关键字将在最初获得正确的结果。
然而,FetchedResultsController
将仅监视Category
对象,因此不会注意到Item
对象中的任何变化。
解决方案是仅在Category
对象中保留一个额外字段以帮助FRC。如果有任何物品是未清的或已购买的,则设置一个标志,FRC 可以监视更改。