【发布时间】:2019-06-03 19:15:46
【问题描述】:
我是编程初学者,尤其是 iOS 开发初学者
目前我正在尝试将领域用作电子商务应用程序中的本地数据库。我有 Realm 的 Product 和 WishList 对象,如下所示
产品:
class Product : Object {
@objc dynamic var productID : Int = 0
@objc dynamic var name : String = ""
@objc dynamic var categoryID : Int = 0
@objc dynamic var categoryName : String = ""
@objc dynamic var unitPrice: Double = 0.0
@objc dynamic var quantityInCart = 0
@objc dynamic var quantityFromServer = 0
@objc dynamic var descriptionProduct : String = ""
@objc dynamic var hasBeenAddedToWishList : Bool = false
@objc dynamic var hasBeenAddedToCart : Bool = false
@objc dynamic var isNewProduct : Bool = false
@objc dynamic var productWeight : String = ""
@objc dynamic var weightUnit : String = ""
@objc dynamic var minimumOrderQuantity = 0
@objc dynamic var maximumOrderQuantity = 0
override static func primaryKey() -> String? {
return "productID"
}
}
愿望清单:
class WishList : Object {
var products = List<Product>()
}
我的应用可以更改用户。所以假设用户 A 将一些产品放在心愿单上(用产品填充 WishList 对象),然后他执行注销,
那么它会使用户B的愿望清单对象在用户B登录后已经有了对象。
所以我认为我需要在 Product 和 Wishlist 对象上都插入 userID,并且我还必须删除 Product 对象上的主键。
override static func primaryKey() -> String? {
return "productID"
}
所以当我从领域数据库执行查询或过滤时,我可以根据 productID 和 userID 进行过滤。
我有使用这种方式的正确方法吗?还是有更好的方法?因为我不习惯将 userID 作为 Product 对象的属性,如下面的代码:
class Product : Object {
@objc dynamic var userID : Int = 0 <--- like this
@objc dynamic var productID : Int = 0
@objc dynamic var name : String = ""
@objc dynamic var categoryID : Int = 0
@objc dynamic var categoryName : String = ""
@objc dynamic var unitPrice: Double = 0.0
@objc dynamic var quantityInCart = 0
@objc dynamic var quantityFromServer = 0
@objc dynamic var descriptionProduct : String = ""
}
class WishList : Object {
@objc dynamic var userID : Int = 0 <--- and like this
var products = List<Product>()
}
通过这种方法,我还将在 Product 对象上拥有具有相同 productID 的“重复”产品数据,但 Product 属性上的 userID 不同
【问题讨论】:
-
产品不属于用户。它们是共享的静态项目。只有愿望清单是特定于用户的。所以只将用户 ID 添加到愿望清单。