【发布时间】:2017-07-25 09:43:46
【问题描述】:
我有两个核心数据实体Contact 和Group。组有两个属性 existingUsers 和 nonExistingUsers 类型为 Contact 和 toMany 关系
我正在尝试使用groupId 作为谓词来获取组属性。这就是我获取组详细信息的方式
let requestForGroups = NSFetchRequest<NSFetchRequestResult>(entityName: "Group")
requestForGroups.returnsObjectsAsFaults = false
requestForGroups.predicate = NSPredicate(format: "groupId == %@", (groupObject?.groupId)!)
requestForGroups.relationshipKeyPathsForPrefetching = ["existingUsers", "nonExistingUsers"]
do {
let results = try managedObjectContext.fetch(requestForGroups) as! [Group]
if results.count > 0 {
print(results.first)
var group: Group!
group = results.first
for users in group.existingUsers?.allObjects as! [Contact] {
print(users)
}
for users in group.nonExistingUsers?.allObjects as! [Contact] {
print(users)
}
}
} catch let error as NSError {
print("Error: \(error) " +
"description \(error.localizedDescription)")
}
当我尝试打印Group 对象时,出现以下关系错误
Optional(<Foodvite.Group: 0x1706801e0> (entity: Group; id: 0xd0000000018c0000 <x-coredata://E4C6CB69-7192-435C-9E2A-534FCFC563F5/Group/p99> ; data: {
existingUsers = "<relationship fault: 0x17063b620 'existingUsers'>";
groupCategory = nil;
groupIconUrl = nil;
groupId = "8ba3e576-edf7-41fa-abd9-df80c4c693f2";
groupName = Friends;
groupOwnerId = "7fa49a4e-2cbf-4c77-8868-bc97ad89881b";
nonExistingUsers = "<relationship fault: 0x17063b600 'nonExistingUsers'>";
}))
有人可以建议一种访问existingUsers 和nonExistingUsers 数据的方法吗?
【问题讨论】:
-
试试
print(existingUsers!.first?.<#some property#>) -
existingUsers的类型为NSSet。它没有first属性 -
公平点,但是 NSSet 的
allObjects属性返回 Array