Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.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
Ios 如何使用SwiftUI在CoreData中使用ForEach中的关系?_Ios_Swift_Core Data_Swiftui_Relationship - Fatal编程技术网

Ios 如何使用SwiftUI在CoreData中使用ForEach中的关系?

Ios 如何使用SwiftUI在CoreData中使用ForEach中的关系?,ios,swift,core-data,swiftui,relationship,Ios,Swift,Core Data,Swiftui,Relationship,该问题已通过“黑客Wift”网站解决 只需按照链接上的步骤操作即可! "https://www.hackingwithswift.com/books/ios-swiftui/one-to-many-relationships-with-core-data-swiftui-and-fetchrequest" 原始询问 我想使用[关系]的元素 但不管我怎么做,都没有用。 有些东西,我错过了,遗憾的是,直到现在我还不知道会是什么:/ 首先,我想展示我的核心数据模型和代码 实体:页面,属性:名称(字符

该问题已通过“黑客Wift”网站解决

只需按照链接上的步骤操作即可! "https://www.hackingwithswift.com/books/ios-swiftui/one-to-many-relationships-with-core-data-swiftui-and-fetchrequest"

原始询问

我想使用[关系]的元素
但不管我怎么做,都没有用。
有些东西,我错过了,遗憾的是,直到现在我还不知道会是什么:/

首先,我想展示我的核心数据模型和代码

实体:页面,属性:名称(字符串),关系:toCard
实体:卡片,属性:标题(字符串),价格(双精度),关系:toPage

场景:页面有多张卡
一对多(一页对多张卡片)

我不能在CardView中这样使用。
Xcode不显示卡的属性,因为它们不匹配。
我怎样才能修好它

卡的数据已保存在关系中(代码如下)


我在这个很棒的“HackingWithWift”网站的帮助下解决了这个问题!只需按照链接上的步骤操作即可

编辑:

  • Goto.xcdatamodeld文件

  • 单击实体->类->编码到手动/无

  • 编辑器->创建NSManagedObject子类

  • 外接程序页面+CoreDataProperties.swift

    public var wrappedName: String {
         name ?? "Unknown Title"
     }
    
     public var cardArray: [Card] {
         let set = toCard as? Set<Card> ?? []
    
         return set.sorted {
             $0.wrappedTitle < $1.wrappedTitle
         }
     }
    
    public var wrappedTitle: String {
         title ?? "Unknown Title"
     }
    
     public var wrappedPrice: Double {
         price
     }
    
  • 现在你可以像这样使用关系的价值了


  • 不允许仅链接答案。请在答案中张贴相关代码,以便其他人可以从中受益。随着时间的推移,链接会断开
    ForEach(Array(whichPage.toCard! as Set), id: \.self) { item in
        CardView(price: item.price, title: item.title ?? "Unknown")
    }
    
    let card = Card(context: self.moc)
    card.title = self.title
    card.price = self.doubleValue
    selectedPage?.addToToCard(card)
    
    public var wrappedName: String {
         name ?? "Unknown Title"
     }
    
     public var cardArray: [Card] {
         let set = toCard as? Set<Card> ?? []
    
         return set.sorted {
             $0.wrappedTitle < $1.wrappedTitle
         }
     }
    
    public var wrappedTitle: String {
         title ?? "Unknown Title"
     }
    
     public var wrappedPrice: Double {
         price
     }
    
    ForEach(pages, id: \.self) { page in
        if whichPage == page {
            ForEach(page.cardArray, id: \.self) { card in
                VStack {
                    CardView(price: card.wrappedPrice, title: card.wrappedTitle)
                }
            }
        }
    }