从目标C库初始化Swift类

您好,我目前正在从目标C导入项目到swift。 目标C项目使用一个自定义库,在其中一个类中它具有​​一个接受一个Class对象的函数,该对象在数据加载时使用该类(代码如下)初始化一个id obj。 在目标C方面,这很好用! 我在swift上使用了与桥头相同的库,但不幸的是一旦数据加载,我的对象就是零。 我验证了用于初始化对象的数据对象是否具有内容。 自定义swift类还需要我在添加自定义init()时实现init(data:Data)初始化程序,我对swift很陌生,任何帮助都很棒! 谢谢!

目标C:

图书馆:

-(id) buildRetObject:(Class)clss fromData(NSData*) data{
id obj = nil;
if (data != nil) {
obj = [[clss alloc] initWithData:data];
}
}

自定义对象,是另一个自定义对象的子类,不在库中,但在主应用程序上:

Item.m:

-(id)init{
    if ([super init]){
       //do something
    }

    return self
}

swift中的相同项目对象:

//customClass super class is abstactCustomClass which is a sub abstract class of NSObject class, init functions are in here, the abstract class
class Item: customClass { 

//variables

override init() {
   super.init()
   // do something
}

required init!(data: Data){
   //fatalError(message here)
   /*tried calling supers method 
    super.init(data:Data) gives error: fatal error: use of unimplemented initializer 'init(dictionary:)'*/
}

//methods

}


经过大量的挖掘,我终于弄清楚了,客观的C从抽象类中知道初始值设定项是什么,而Swift不是。 所以我需要做的就是实现这个初始化器并且它可以工作。

required init!(data: Data){
    super.init(data:Data)
}

override init(dictionary: [AnyHashable: Any]!){
    super.init(Dictionary:dictionary)
}
链接地址: http://www.djcxy.com/p/66181.html

上一篇: initialize swift class from objective c library

下一篇: Debug Android app crash on startup without logcat or ACRA