我正在创建一个IOS应用程序,在其中我从Firebase中获取了一些数据,我正在使用领域来保存所获取的数据,因此当用户离线时,该应用程序代表用户上次在线时保存的数据。我有以下领域类别作为类别和商店:
class RLMShopsCategory : Object {
@objc dynamic var categoryName: String = ""
let shopsList = List<RLMShop>()
}
和
class RLMShop: Object {
@objc dynamic var shopName: String = ""
@objc dynamic var discountPercentage: String = ""
@objc dynamic var phoneNumber: String = ""
@objc dynamic var shopCity: String = ""
@objc dynamic var shopArea: String = ""
@objc dynamic var services: String = ""
@objc dynamic var instagramUserName: String = ""
@objc dynamic var facebookUserName: String = ""
@objc dynamic var mapLatitude: String = ""
@objc dynamic var mapLongitude: String = ""
@objc dynamic var indexNumber: Int = 0
var parentCategory = LinkingObjects(fromType: RLMShopsCategory.self, property: "shopsList")
}
当用户在线时,我正在View Controller的提取数据功能内使用以下循环:
for doc in docs {
let shopData = doc.data()
let newShop = RLMShop()
newShop.shopName = shopData["name"] as? String ?? "Empty Name"
newShop.discountPercentage = shopData["discount"] as? String ?? "0"
newShop.shopArea = shopData["area"] as? String ?? "Empty Area"
newShop.shopCity = shopData["city"] as? String ?? "Empty City"
newShop.phoneNumber = shopData["phone number"] as? String ?? "Empty Phone Number"
newShop.services = shopData["services"] as? String ?? "Empty Services"
newShop.instagramUserName = shopData["instaUser"] as? String ?? ""
newShop.facebookUserName = shopData["faceUser"] as? String ?? ""
newShop.mapLatitude = shopData["maplat"] as? String ?? "Empty Latitude"
newShop.mapLongitude = shopData["maplong"] as? String ?? "Empty Longitude"
self.saveShop(shop: newShop) // My issue is here
}
我的saveShop功能:
func saveShop(shop: RLMShop) {
do {
try realm.write {
realm.add(shop)
}
} catch {
print("Error saving shop \(error)")
}
}
我的问题是,当我在for循环中使用不保存任何数据的save函数时,当我使用断点时,newshop以及我的领域类别都可以正常加载,但是即使在调用save方法,我错过了什么或做错了什么? ,谢谢
您遇到的问题是您正在创建RLMShop
对象,但是它没有链接到RLMShopsCategory
对象,因此shopsList
将不包含新对象。