1
我有一个名为List
的对象,它的子类领域的Object
类:存储自定义对象的数组中的境界
class List: Object {
dynamic var brandListItems: [BrandListItem] = []
}
和另一个对象,BrandListItem
这也子类Object
:
class BrandListItem: Object {
dynamic var brandID: String?
dynamic var name: String?
}
我的应用程序崩溃与以下错误
'属性'brandListItems'被声明为'NSArray',它不是受支持的RLMObject属性类型。所有属性必须是基元,NSString,NSDate,NSData,NSNumber,RLMArray,RLMLinkingObjects或RLMObject的子类。
我试着做一些像RLMArray<BrandListItem>()
没有运气。如何将这些对象成功保存到Realm?
另请注意,'List'属性应该用'let'而不是'var'声明。而且你可能会遇到问题,创建一个名为'List'的新类,然后尝试在其中使用Realm Swift的'List'。你可能需要为你的班级选择一个不同的名字,或者完全限定'RealmSwift.List '。 –
bdash
谢谢@bdash。为什么我无法在类的初始设置中执行'var brandListItems = RealmSwift.List()',然后在failable初始化器中执行'self.brandListItems = RealmSwift.List (array)'(where数组是'[BrandListItem]') –
您应该使用'let'声明'List'属性的原因是Realm没有办法让_assignment_截取与Objective-C不兼容的类型的属性(例如,任何Swift泛型类型)。分配给这种财产不会导致财产的价值持续存在。您应该声明该属性为'let brandListItems = RealmSwift.List ()',然后_mutate_现有属性值(即'self.brandListItems.append(contentsOf:array)'),在您的初始化程序中填充它。 –
bdash