从 coredata 中过滤值并分配给 tableview
Posted
技术标签:
【中文标题】从 coredata 中过滤值并分配给 tableview【英文标题】:Filtering values from coredata and assign to tableview 【发布时间】:2018-02-22 08:02:15 【问题描述】:我的核心数据实体Order
的值存储在orderDetails
中。 orderDetails
的计数为 8,它具有 orderId
、remaining Balance
和 deliveryType
等列。列deliveryType
具有值Payment Pending
、Delivery Pending
等。有2 个条目具有Payment Pending
。我想获取这两个条目及其orderId
和remaining 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的主要内容,如果未能解决你的问题,请参考以下文章
将两个 CoreData 关系(具有反向关系)分配给同一个实体