簡體   English   中英

從 SwiftUI CoreData 視圖返回計數

[英]return count from a SwiftUI CoreData View

我有一個顯示 CoreData 查詢結果的 SwiftUI 視圖。
在它的父視圖中,我想顯示查詢的計數(不再查詢一次)。
我試圖將計數傳遞給綁定中的父級,但我收到警告“在視圖更新期間修改狀態,這將導致未定義的行為。” 它不起作用。

import SwiftUI

struct CD_Main: View {
  @State var count = 0

    var body: some View {
      VStack {
        Text("count in main: \(count)")
        CD_Query(c: $count)
      }
    }
}

struct CD_Query: View {
  @Binding var c : Int

  @Environment(\.managedObjectContext) var moc
  @FetchRequest(entity: Item.entity(), sortDescriptors: [], predicate: nil) var items: FetchedResults<Item>

  var body: some View {
  c = items.count // Produces: Modifying state during view update, this will cause undefined behavior.
    return VStack {
      Text("Count Innen: \(items.count) ")
      List(items, id: \.self) {
        item in
        Text(item.title)
      }
    }
  }
}

任何想法如何正確設置綁定或如何將計數傳遞給父級?

改為嘗試以下

  var body: some View {
    VStack {
      Text("Count Innen: \(items.count) ")
      .onAppear { // actually it does not matter to which view this attached
         DispatchQueue.main.async {
            self.c = items.count // update asynchronously
         }
      }
      List(items, id: \.self) {
        item in
        Text(item.title)
      }
    }
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM