我创建了一个具有以下属性的核心数据实体(来自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
}