Core Data获取订单关联产品UUID数组时遇buildExpression匹配错误
问题解决:Core Data中获取Order关联的Product ID数组
你遇到的No exact matches in reference to static method 'buildExpression'错误,是因为误用了SwiftUI的ForEach组件——ForEach是用来在视图中渲染列表元素的工具,不能在普通Swift计算属性里用来遍历数组。
正确写法1:使用数组的forEach实例方法(小写f)
把SwiftUI的ForEach换成数组自带的遍历方法forEach,代码修改如下:
public var productIdArray: [String] { var tempUuids: [String] = [] orderProductArray.forEach { op in if let tempUuid = op.product?.id?.uuidString { tempUuids.append(tempUuid) } } return tempUuids }
正确写法2:用compactMap简化代码
更简洁的方式是使用Swift数组的compactMap方法,它会自动过滤掉nil值,直接生成非空的ID数组:
public var productIdArray: [String] { orderProductArray.compactMap { $0.product?.id?.uuidString } }
这个方法会遍历orderProductArray中的每一个OrderProduct,提取出非空的product.id.uuidString,最终返回一个干净的字符串数组。
内容的提问来源于stack exchange,提问作者lcj
相关产品推荐
相关产品推荐

