【发布时间】:2017-03-27 07:09:05
【问题描述】:
收到以下致命错误。
致命错误:“试试!”表达式意外引发错误:错误 Domain=io.realm Code=1 "Schema 验证失败,原因如下 错误: - 属性“GearModel.category”声明为链接对象属性“CategoryRepository.gearList”链接到类型“CategoryModel”的来源 UserInfo={NSLocalizedDescription=Schema 验证失败,因为 以下错误: - 属性“GearModel.category”声明为链接对象属性“CategoryRepository.gearList”链接到类型“CategoryModel”的来源, 错误代码=1}:
此处的对象模型:齿轮模型仅分配给一个类别
import Foundation
import RealmSwift
class GearModel: Object{
dynamic var gearID = NSUUID().uuidString
dynamic var name = ""
dynamic var manufacturer = ""
dynamic var sortOrder = 0
dynamic var category: CategoryModel?
override class func primaryKey() -> String? {return "gearID"}
}
Category Model:试图获取所有 GearModel 项目的列表,并分配了 Category。
import Foundation
import RealmSwift
class CategoryModel: Object{
dynamic var categoryID = NSUUID().uuidString
dynamic var sortOrder = 0
dynamic var name = ""
let gearList = LinkingObjects(fromType: GearModel.self, property: "category")
override class func primaryKey() -> String? {return "categoryID"}
}
Category Repository 类:在 allCategories() func 中的“let realm =....”行发生致命错误
import Foundation
import RealmSwift
class CategoryRepository: CategoryModel{
class func GetGearItemsForCategory(CategoryID: String) -> Results<GearModel>
{
let realm = try! Realm()
var gearItems = realm.objects(GearModel.self)
let predicate = NSPredicate(format: "categoryID = %@", CategoryID)
gearItems = gearItems.filter(predicate)
return gearItems
}
class func GetCountOfGearItems(CategoryID: String) -> Int
{
let realm = try! Realm()
var gearItems = realm.objects(GearModel.self)
let predicate = NSPredicate(format: "categoryID = %@", CategoryID)
gearItems = gearItems.filter(predicate)
return gearItems.count
}
class func AddCategory(CategoryID: String, Name: String, SortOrder: Int){
let realm = try! Realm()
let category = CategoryModel(name: CategoryID, categoryID: Name, sortOrder: SortOrder)
try! realm.write {
realm.add(category)
}
}
class func allCategories() -> Results<CategoryModel> {
let realm = try! Realm()
return realm.objects(CategoryModel.self).sorted(byProperty: "SortOrder")
}
【问题讨论】:
-
错误
Property 'GearModel.categories'...表明您在 GearModel 中有另一个名为 categories 的属性。这是哪里? -
很好,我在一次尝试修复问题时错误地复制到错误与代码不匹配。在上面的代码中修复。我已将关系从 1 - Many 更改为 Many - Many。这就是类别变成类别的原因。但这也没有用。
-
你也可以分享
CategoryRepository的课程吗? -
添加了 CategoryRepository 类。注意:应用程序在添加 LinkingObjects 之前按预期运行。所以剩下的班级应该没问题,(我认为:))
标签: swift realm fatal-error