Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用SwiftUI ForEach从SensorDeredSet获取字符串值_Swift_Core Data_Foreach_Swiftui_Nsorderedset - Fatal编程技术网

使用SwiftUI ForEach从SensorDeredSet获取字符串值

使用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

使用我可以使用ForEach使用CoreData中从一对多关系创建的SensorDeredSet,但是我似乎无法访问存储在Core Data实体中的字符串属性

我有两个CoreData实体:Client和SessionNote。客户机可以有多个SessionNotes、一组clientNotes,SessionNotes只能有一个客户机

Client+CoreDataClass.swift:

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??缺少括号。你可能也对谢谢感兴趣!这就成功了。