从 coredata 中过滤值并分配给 tableview

Posted

技术标签:

【中文标题】从 coredata 中过滤值并分配给 tableview【英文标题】:Filtering values from coredata and assign to tableview 【发布时间】:2018-02-22 08:02:15 【问题描述】:

我的核心数据实体Order 的值存储在orderDetails 中。 orderDetails 的计数为 8,它具有 orderIdremaining BalancedeliveryType 等列。列deliveryType 具有值Payment PendingDelivery Pending 等。有2 个条目具有Payment Pending。我想获取这两个条目及其orderIdremaining Balance 的值。

viewWillAppear 我正在这样做……

for result in orderDetails 
     if let delType = result.value(forKey: "deliveryType") as? NSString 
             if delType == "Payment Pending" 

              
          
      

这只是将我带到具有值“Payment Pending”的条目。但是我该如何进一步进行.. 我的意思是如何在numberOfRowsInSection 中给出计数并在cellForRowAt 中分配正确的值..

【问题讨论】:

【参考方案1】:

使用以下代码代替你的 for 循环:-

let paymentPendingData = orderDetails.filter ($0.deliveryType ?? "").lowercased() == "payment pending" 

这将过滤您 orderDetails 中的付款待处理数据并存储到数组 paymentPendingData 中,该数组也是 Order 类型的数组。您可以使用该数组的计数。

【讨论】:

感谢@Vincent Joy。工作得很好!也投了赞成票...:) .@Vincent Joy 只是一个疑问...我们是否需要始终提及 .lowercased 或者我们可以提供类似let paymentPendingData = orderDetails.filter ($0.deliveryType ?? "") == "Payment Pending" 我添加它是为了增加安全性。如果您从服务器获取数据,而某些程序员忘记准确地以该单词大小写格式添加它,则此逻辑将不起作用。 哦..好的...谢谢...否则没有它也可以工作...? 是的,它会起作用的。或者,您也可以使用 contains() 方法来代替“==”类型。然后它将检查该单词的格式。即 orderDetails.filter ($0.deliveryType ?? "").contains("Payment Pending")

以上是关于从 coredata 中过滤值并分配给 tableview的主要内容,如果未能解决你的问题,请参考以下文章

在 Core Data 中获取过滤的关系

mysql存储过程,选择最大值并插入值并分配给变量

将两个 CoreData 关系(具有反向关系)分配给同一个实体

从 websocket 过滤 json 对象/值并打印到控制台日志

xcode 无法将类型的值分配给 NSSet

从websocket过滤json对象/值并打印到控制台日志