ios – RealmSwift初始化程序 – Xcode修复 – 它一直出错

当我想为一个类提供初始化器时,我无法让Realm工作,Xcode无休止地建议错误.

我决定上传两个屏幕截图而不是代码段,以便更容易看到错误

我按照建议并最终得到这个

最后一个错误告诉“使用未声明的类型’RLMObjectSchema’

我使用最新的0.99版本的RealmSwift

解决方法

建议的方法是创建成员便利初始化程序,如下所示:
class Item: Object {
    dynamic var isBook: Bool = true
    dynamic var numberOfPages: Double = 0
    dynamic var isInForeignLanguage: Bool = true
    dynamic var isFictional: Bool = true
    dynamic var value: Int {
        get {
            return calculalatedValue()
        }
    }

    convenience init(isBook: Bool,numberOfPages: Double,isInForeignLanguage: Bool,isFictional: Bool) {
        self.init()
        self.isBook = isBook
        self.numberOfPages = numberOfPages
        self.isInForeignLanguage = isInForeignLanguage
        self.isFictional = isFictional
    }

    ...
}

您不能省略认初始值设定项,因为Realm需要认初始值设定项来实例化查询对象.在查询Realm时,Realm在内部调用认初始化程序来实例化对象.

您也可以覆盖认初始值设定项,但我们不建议使用它.因为当您覆盖认初始化程序时,由于Swift类型系统限制,您应该覆盖从ObjC层继承的其他所需初始化程序.您还应该导入Realm和RealmSwift框架.因为在这些初始值设定项的参数中只有Objective-C类.

import RealmSwift
import Realm // Need to add import if you override default initializer!

class Item: Object {
    dynamic var isBook: Bool = true
    dynamic var numberOfPages: Double = 0
    dynamic var isInForeignLanguage: Bool = true
    dynamic var isFictional: Bool = true
    dynamic var value: Int {
        get {
            return calculalatedValue()
        }
    }

    required init() {
        super.init()
    }

    required init(realm: RLMRealm,schema: RLMObjectSchema) {
        super.init(realm: realm,schema: schema)
    }

    required init(value: AnyObject,schema: RLMSchema) {
        super.init(value: value,schema: schema)
    }

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...