使用swift和obj c

时间:2014-12-30 11:34:15

标签: ios objective-c swift

我已阅读此问题:How to call Objective-C code from Swift 1。但我能找到我需要的东西。 我在我的项目中使用swift像第一语言,后来我添加了Objective C.但我的问题是在Objective c文件中如何在swift中调用函数,现在我只能做相反的事情(在swift和使用中工作)客观c类)。 当我关注代码时:

#import "ViewController-Swift.h"

xcode问题是:file not found.

现在这是我的问题:

@objc class ShareViewController: UIViewController {
    var name: String
    init(name: String) {
        self.name = name
    }

    // Needed to add a class level initializer
    class func newInstanceNamed(name: String) -> ShareViewController {
        return ShareViewController(name: name)
    }

    func abilitaTimer(){
        println("ciao")

        }


    }
}

xcode问题是:required initializer init coder...

2 个答案:

答案 0 :(得分:2)

除非您正在构建的项目名为ViewController,否则您的文件名错误。查看为您创建的桥接头文件。如果它被称为xyzzy-Bridging-Header.h,那么您要在Objective-C中导入的文件为xyzzy-Swift.h

答案 1 :(得分:0)

在基于Objc的项目中快速迁移:

  • 创建新的*.swift文件(在Xcode中)或使用Finder
  • 添加
  • 如果Xcode之前没有这样做,请添加swift bridging empty header(见下文4)
  • 使用@objc属性实现您的Swift类:

    import UIKit @objc class Hello { func sayHello () { println("Hi there!") } }

  • 打开构建设置并检查以下参数:
        产品模块名称:myproject
        定义模块:是
        嵌入式内容包含Swift :是
        安装Objective-C兼容性标题:是
         Objective-C桥接标题:$(SRCROOT)/Sources/SwiftBridging.h

  • * .m文件中的导入标题(由Xcode自动生成)。例如,假设您的项目名称为myproject,那么该文件将为myproject-Swift.h

    #import "myproject-Swift.h"

  • 清理并重建您的Xcode项目