我从愿望 list 到产品之间存在多对多关系。我将 codegen 属性设置为 Manual/None,因此我创建了受人尊敬的类,如下所示。
class Product: NSManagedObject {
struct constants {
static let ID = "id"
static let NAME = "name"
static let DESCRIPTION = "description"
static let wishLists = "shoppingLists"
}
}
extension Product {
@NSManaged public var id: Int64
@NSManaged public var name: String
@NSManaged public var desc: String
@NSManaged public var wishLists: NSOrderedSet?
}
class WishList: NSManagedObject {
struct constants {
static let ID = "id"
static let NAME = "name"
static let PRODUCT = "products"
}
func addProducts(_values : NSMutableOrderedSet) {
}
func removeProducts(_values : NSMutableOrderedSet) {
}
func addProduct(_values : Product) {
}
func removeProduct(_values : Product) {
}
}
extension WishList {
@NSManaged public var id: Int64
@NSManaged public var name: String
@NSManaged public var products: NSOrderedSet?
}
我需要的是,如何实现便捷方法来实现以下功能,因为核心数据不会代表我创建,因为我将 codegen 设置为手动/无。
用户可以将产品添加到多个愿望 list
每个愿望 list 可以有多个产品。
最佳答案
将 Codegen 设置为“手动/无”后,您可以自由编写自己的实现或让 Xcode 为您生成适当的子类。 (编辑器 -> 创建 NSManagedObject 子类...
)所有帮助器方法都可以在那里轻松使用。 (假设NSOrderedSet
)
extension WishList {
@objc(insertObject:inProductsAtIndex:)
@NSManaged public func insertIntoProducts(_ value: Product, at idx: Int)
@objc(removeObjectFromProductsAtIndex:)
@NSManaged public func removeFromProducts(at idx: Int)
@objc(insertProducts:atIndexes:)
@NSManaged public func insertIntoProduct(_ values: [Product], at indexes: NSIndexSet)
@objc(removeProductsAtIndexes:)
@NSManaged public func removeFromProducts(at indexes: NSIndexSet)
@objc(replaceObjectInProductsAtIndex:withObject:)
@NSManaged public func replaceProducts(at idx: Int, with value: Product)
@objc(replaceProductsAtIndexes:withProducts:)
@NSManaged public func replaceProducts(at indexes: NSIndexSet, with values: [Product])
@objc(addProductsObject:)
@NSManaged public func addToProducts(_ value: Product)
@objc(removeProductsObject:)
@NSManaged public func removeFromProducts(_ value: Product)
@objc(addProducts:)
@NSManaged public func addToProducts(_ values: NSOrderedSet)
@objc(removeProducts:)
@NSManaged public func removeFromProducts(_ values: NSOrderedSet)
}
...产品
及其愿望 list
反之亦然。
关于ios - Swift Core Data 多对多关系处理,代码生成为手动/无,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54840533/