使用SwiftUI ForEach从SensorDeredSet获取字符串值
使用我可以使用ForEach使用CoreData中从一对多关系创建的SensorDeredSet,但是我似乎无法访问存储在Core Data实体中的字符串属性 我有两个CoreData实体:Client和SessionNote。客户机可以有多个SessionNotes、一组clientNotes,SessionNotes只能有一个客户机 Client+CoreDataClass.swift:使用SwiftUI ForEach从SensorDeredSet获取字符串值,swift,core-data,foreach,swiftui,nsorderedset,Swift,Core Data,Foreach,Swiftui,Nsorderedset,使用我可以使用ForEach使用CoreData中从一对多关系创建的SensorDeredSet,但是我似乎无法访问存储在Core Data实体中的字符串属性 我有两个CoreData实体:Client和SessionNote。客户机可以有多个SessionNotes、一组clientNotes,SessionNotes只能有一个客户机 Client+CoreDataClass.swift: public class Client: NSManagedObject { } public cl
public class Client: NSManagedObject {
}
public class SessionNote: NSManagedObject {
}
Client+CoreDataProperties.swift:
extension Client {
@nonobjc public class func fetchRequest() -> NSFetchRequest<Client> {
return NSFetchRequest<Client>(entityName: "Client")
}
@NSManaged public var firstName: String?
@NSManaged public var lastName: String?
@NSManaged public var id: UUID?
@NSManaged public var clientNotes: NSOrderedSet?
}
extension SessionNote {
@nonobjc public class func fetchRequest() -> NSFetchRequest<SessionNote> {
return NSFetchRequest<SessionNote>(entityName: "SessionNote")
}
@NSManaged public var date: Date?
@NSManaged public var noteText: String?
@NSManaged public var id: UUID?
@NSManaged public var clientOrigin: Client?
}
SessionNote+CoreDataProperties.swift:
extension Client {
@nonobjc public class func fetchRequest() -> NSFetchRequest<Client> {
return NSFetchRequest<Client>(entityName: "Client")
}
@NSManaged public var firstName: String?
@NSManaged public var lastName: String?
@NSManaged public var id: UUID?
@NSManaged public var clientNotes: NSOrderedSet?
}
extension SessionNote {
@nonobjc public class func fetchRequest() -> NSFetchRequest<SessionNote> {
return NSFetchRequest<SessionNote>(entityName: "SessionNote")
}
@NSManaged public var date: Date?
@NSManaged public var noteText: String?
@NSManaged public var id: UUID?
@NSManaged public var clientOrigin: Client?
}
我试过Text\note.noteText??但它会抛出以下错误:
“AnyHashable”类型的值没有成员“noteText”
当我尝试Text\self.selectedClient.clientNotes!时!。valueforKeyPath:\SessionNote.noteText它引发以下错误:
协议类型“Any”不能符合“\u FormatSpecifiable”,因为只有具体类型才能符合协议
是否仍要为每个SessionNote文本实体显示不同的字符串值?您可以在OrderedSet上使用array方法并强制将其类型转换为[SessionNote],因为您知道您将始终将SessionNote类存储到有序集
ForEach(selectedClient.clientNotes!.array as! [SessionNote], id: \.self) { (note: SessionNote) in
Text(note.text ?? "")
}
因为在每个你想使用笔记的地方,这种铸造都是必要的。您还可以在客户端中添加一个computed属性,该属性始终为您提供SessionNote数组的类型化版本
而且,有了这些新的改变,你可以让你的生活变得更好
ForEach(selectedClient.typedClientNotes, id: \.self) { note in
Text(note.text ?? "")
}
出于这个原因,我尝试对核心数据关系使用normalset。因为它可以被键入,并且使使用Coredata变得非常有趣。但是,尽管是一个非类型的集合,但SensorDeredSet有其自身的优势。试试Textnote as?会话说明?.noteText??这也起了作用。谢谢欢迎您发短信作为?会话说明?.noteText??缺少括号。你可能也对谢谢感兴趣!这就成功了。