【问题标题】:call swift class (derived from NSObject class) init from objective c从目标 c 调用 swift 类(派生自 NSObject 类)init
【发布时间】:2015-03-07 11:30:56
【问题描述】:

我有一个 Swift 类,它继承自一个用 Objective-C 编写的 NSObject 派生类。

@objc class DisplayMessage : JSQMessage, BaseModel
{
 init(var userId:String, var userName:String, var message:String, var group:Group)
    {
//...
     }
}

如何从 Objective-C 调用这个初始化程序?

我只看到 JSQMessage(用 obj-c 编写的 NSObject 派生类)inits.. + 一个没有参数的默认 init 方法

更新

我在 swift 中的 init 前面插入了一个@objc,我得到了错误

方法不能标记@objc 因为参数1,2,3,4的类型不能在objective-c中表示

看到这个后,我把String类型改成了NSString,Group类已经是@objc了;我仍然收到同样的错误

更新 2

我用 Int 初始化器尝试过同样的事情,我得到了同样的错误

  @objc init(var numberLol:Int)
{
    super.init(senderId: "", senderDisplayName: "", date:nil,  text: nil)
}

【问题讨论】:

  • 你试过用NSString替换String吗?
  • 是的,我在 UPDATE 1 中提到了这一点
  • 哎呀!,对不起,我错过了

标签: ios objective-c iphone swift


【解决方案1】:

好的,所以答案是我必须从 init 中的每个参数中删除“var”。为什么?身份证

【讨论】:

  • 你为什么首先使用var
猜你喜欢
  • 2021-03-12
  • 2017-08-26
  • 1970-01-01
  • 2015-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多