初始化时领域对象子类的实例为空
Instance of Realm Object subclass is null when init
我是 iOS 开发和 swift 的新手,我正在为我的 swift 项目使用 Realm。
首先,我创建了一个领域对象的子class:
enum EnumA: Int {
case ValueA
case ValueB
}
class ClassA: Object {
var propA: EnumA = EnumA.ValueA
var propB: Double = 0.0
}
那我还有一个class:
class ClassB: Object {
var id = 0
var name: String = ""
let aLotOfA = List<ClassA>()
override static func primaryKey() -> String? {
return "id"
}
}
然后我在某处创建了 ClassB 的实例:
class ClassC: NSObject {
static let cManager = ClassC()
func defaultB() -> ClassB {
let instanceA = ClassA()
let instanceB = ClassB()
instanceB.name = "String"
instanceB.aLotOfA.append(instanceA)
return instanceB
}
}
我有这个 class:
class ClassD: Object {
let aB: ClassB = ClassC.cManager.defaultB()
}
当我调用 defaultB()
时,第一行 (let instanceA = ClassA()
) 使 instanceA 为空。我不断在控制台中收到这样的消息:
"Object type '(null)' does not match RLMArray type 'ClassA'."
或
"The `ClassD.aB` property must be marked as being optional."
我不知道这里出了什么问题。请有人帮助我,非常感谢。
我的环境:
Mac OS X 10.11.1 + Xcode 7.1
Realm 是最新的(刚刚从 realm.io 下载)
基础 SDK:iOS9.1
部署目标:iOS9
正如 zuziaka 所指出的,您将需要使用 dynamic var
声明所有持久属性。这不适用于 List
和 RealmOptional
属性。
此外,Realm 不支持枚举。您需要将 属性 ClassA.propA
声明为 Int
并使用 rawValue
初始化其默认值:
class ClassA {
var propA: Int = EnumA.ValueA.rawValue
…
}
一对一关系必须始终标记为可选。 属性 ClassD.aB
.
就是这种情况
我是 iOS 开发和 swift 的新手,我正在为我的 swift 项目使用 Realm。
首先,我创建了一个领域对象的子class:
enum EnumA: Int {
case ValueA
case ValueB
}
class ClassA: Object {
var propA: EnumA = EnumA.ValueA
var propB: Double = 0.0
}
那我还有一个class:
class ClassB: Object {
var id = 0
var name: String = ""
let aLotOfA = List<ClassA>()
override static func primaryKey() -> String? {
return "id"
}
}
然后我在某处创建了 ClassB 的实例:
class ClassC: NSObject {
static let cManager = ClassC()
func defaultB() -> ClassB {
let instanceA = ClassA()
let instanceB = ClassB()
instanceB.name = "String"
instanceB.aLotOfA.append(instanceA)
return instanceB
}
}
我有这个 class:
class ClassD: Object {
let aB: ClassB = ClassC.cManager.defaultB()
}
当我调用 defaultB()
时,第一行 (let instanceA = ClassA()
) 使 instanceA 为空。我不断在控制台中收到这样的消息:
"Object type '(null)' does not match RLMArray type 'ClassA'."
或
"The `ClassD.aB` property must be marked as being optional."
我不知道这里出了什么问题。请有人帮助我,非常感谢。
我的环境:
Mac OS X 10.11.1 + Xcode 7.1
Realm 是最新的(刚刚从 realm.io 下载)
基础 SDK:iOS9.1
部署目标:iOS9
正如 zuziaka 所指出的,您将需要使用 dynamic var
声明所有持久属性。这不适用于 List
和 RealmOptional
属性。
此外,Realm 不支持枚举。您需要将 属性 ClassA.propA
声明为 Int
并使用 rawValue
初始化其默认值:
class ClassA {
var propA: Int = EnumA.ValueA.rawValue
…
}
一对一关系必须始终标记为可选。 属性 ClassD.aB
.