跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • [求助] 关于 SwiftUI @FetchRequest nsPredicate 在更新数据之后变为 nil 的问题
未分類
26 2 月 2022

[求助] 关于 SwiftUI @FetchRequest nsPredicate 在更新数据之后变为 nil 的问题

[求助] 关于 SwiftUI @FetchRequest nsPredicate 在更新数据之后变为 nil 的问题

資深大佬 : AlwaysBee 50

简单描述一下我这里遇到的问题: 背景: 主页 Page A ,列表页 Page B ,两个页面都会通过 @FetchRequest 这个 property wrapper 获取数据,并且是根据日期作为过滤条件,start_date >= … and start_date < …

  @FetchRequest(sortDescriptors: [SortDescriptor(PlanItem.start_time)])   private var plans: FetchedResults<PlanItem>  ....// 省略    self.plans.nsPredicate = NSPredicate(format: "%K >= %@ AND %K < %@", #keyPath(PlanItem.start_time), startDate as NSDate,#keyPath(PlanItem.start_time), endDate as NSDate ) 

当从 Page A navigate 到 Page B ,且此时 Page A 显示的数据和 Page B 的数据同一天的,也即他们的过滤条件是一致的,如果此时在 Page B 添加该日期的数据或者更新数据,则会导致列出所有日期的数据的问题,也就是日期条件失效了,通过排查发现是 nsPredicate 变为 nil 了。 但如果我此时将 Page B 的日期切换到后一天(即和 Page A 的过滤条件不一致),进行同样的更新操作,则正常运行

在官方论坛找到了一个近似的问题 https://developer.apple.com/forums/thread/692040

相关: https://www.raywenderlich.com/27201015-dynamic-core-data-with-swiftui-tutorial-for-ios

大佬有話說 (2)

  • 資深大佬 : hstdt

    我一般再封装一层 View ,把 predicate 作为参数,在 init 方法里面全初始化掉,不会再去修改 predicate

  • 主 資深大佬 : AlwaysBee

    @hstdt 是的,我也是这么做的。
    这次用了 iOS 15 的新特性,可以动态地更新 predicate ,在帖子里的情况会出问题

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具