iOS Swift:如何解析Receiver类型'Database Manager'实例消息是一个前向声明?

时间:2015-03-15 19:34:31

标签: ios objective-c swift compiler-errors

我正在使用Swift和Objective C代码。我最近从

更改了我的单例Objective C类
 - (id)init {
  if (self = [super init]) {
    [self initSharedData];
  }
  return self;
}

+ (SharedData *)sharedData {
  static dispatch_once_t onceToken = 0;
  dispatch_once(&onceToken, ^{ g_sharedInfo = [[SharedData alloc] init]; });
  return g_sharedInfo;
}

- (void)initSharedData {
  self.databaseManager = [[DatabaseManager alloc] init];
}

required override init()
{
    super.init()

    self.initSharedData()

}


class var sharedData : SharedData {
    struct Singleton {
        static let instance = SharedData()
    }

    return Singleton.instance
}


func initSharedData(){

    self.databaseManager = DatabaseManager()

}

正如您所知,我使用databasemanager和user创建了一个对象实例,因此我可以在整个App中使用它。

然而,自从我用Swift单例类替换Objective C单例类后,我开始在我的App中的其他Objective C类中获得跟随错误。如何正确解决此问题?我不相信我应该在我的目标c类中导入databasemanager类来解决问题。

  

'接收器类型'DatabaseManager'例如消息是转发   声明'

1 个答案:

答案 0 :(得分:0)

  

我不相信我应该在我的目标c类中导入databasemanager类来解决问题。

但您必须导入DatabaseManager才能解决问题。前向声明只是告诉编译器DatabaseManager是一个类的一种方式,而不是 - 比如说 - 函数或常量。