计算满足特定条件的核心数据属性(SwiftUI)



我创建了一个具有以下属性的核心数据实体(来自Item+CoreDataProperties.swift文件(:

extension Item {
@nonobjc public class func fetchRequest() -> NSFetchRequest<Item> {
return NSFetchRequest<Item>(entityName: "Item")
}
@NSManaged public var id: UUID?
@NSManaged public var likes: Int16
}

我试图在ContentView中返回一个变量,该变量显示点赞数超过5的Item的总数。最好的方法是什么?

我尝试添加下面的计算属性,但它只检查数组中的第一个项是否满足条件,我不知道如何让它在所有这些项上循环。

@FetchRequest(entity: Item.entity(), sortDescriptors: [])
var item: FetchedResults<Item>    
var likesCount:Int {
get {

if item[0].likes > 5 {
return 1
}
else {
return 0
}
}
}

我还读到了一个名为countForFetchRequest的方法,但它似乎只用于检测错误,我不确定它是否适用于此。

非常感谢!非常感谢您的帮助。

也许是这样的:

var countOfItems: Int {
getCount()
}

然后:

func getCount() -> Int {
var countOfItems: Int = 0
let context = PersistenceController.shared.container.viewContext

let itemFetchRequest: NSFetchRequest<Item> = Item.fetchRequest()

itemFetchRequest.predicate = NSPredicate(format: "likes > %d", 5)

do {
countOfItems = try context.count(for: itemFetchRequest)
print (countOfItems)
}
catch {
print (error)
}
return countOfItems
}

最新更新