• 1、我们先创建一个OC的项目MyFirstOCUseSwiftDemo 2、我们点击Target看到右边选择Build Settings,把Defines Module改为YES, 3、我们回到工程目录下,New File一个Swift File,起名为MyFristSwift,此时会...

    1、我们先创建一个OC的项目MyFirstOCUseSwiftDemo

    2、我们点击Target看到右边选择Build Settings,把Defines Module改为YES,

    3、我们回到工程目录下,New File一个Swift File,起名为MyFristSwift,此时会弹框提示我们是否创建一个桥接文件,如图:

    4、创建好之后我们再次选择项目的Target看到右侧的Build Settings选项,往下滑动会看到这样一个目录:

    此时是系统为我们自动创建了桥接"项目名-Swift"文件和"项目名-Bridging-Header"文件;

    5、接下来我们开始创建自己的Swift文件,新建一个Swift起名为:MyFristSwift,它看起来应该长这样:

    import Foundation
    import UIKit
    
    
    class MyFristSwift: UIViewController {
        
        override func viewDidLoad() {
            super.viewDidLoad()
         
            self.view.backgroundColor = UIColor.green
    
        }
        
        
        
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }
    }

    6、接下来我们要在OC的控制器(也就是你想要调用Swift的OC控制器)里边import一下第四步图中展示的swift文件,此时注意的是这个头文件是手动写的,你也可以在第四步中复制Objcective-C Generated Interface Header Name对应的值;

    7、好了,这是最后一步,在OC控制器中 创建一个按钮进入我们的swift页面吧,它应该是这样的:

    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view.
        //创建属于我们自己的按钮
        [self.view addSubview:self.nextBtn];
    
    }
    - (void)nextBtnClicked:(UIButton *)btn{
        // 使用Swift的类
        MyFristSwift *swiftVC = [[MyFristSwift alloc] init];
        [self presentViewController:swiftVC animated:YES completion:nil];
    }
    -(UIButton *)nextBtn{
        
        if (!_nextBtn) {
            
            _nextBtn = [UIButton buttonWithType:UIButtonTypeCustom];
            _nextBtn.frame = CGRectMake(40, 100, 100, 44);
            _nextBtn.layer.masksToBounds = YES;
            _nextBtn.layer.cornerRadius = 4;
            _nextBtn.titleLabel.textAlignment = NSTextAlignmentCenter;
            [_nextBtn setTitle:@"进入Swift" forState:UIControlStateNormal];
            [_nextBtn setBackgroundColor:[UIColor brownColor]];
            [_nextBtn addTarget:self action:@selector(nextBtnClicked:) forControlEvents:UIControlEventTouchUpInside];
        }
        return _nextBtn;
    }
    

     

    展开全文
  • OCswift相互调用

    2017-04-26 11:39:33
    一、OC调用swift文件 二、swift调用OC文件 三、注意和总结 添加: 四、自定义桥接文件  一、OC调用swift文件  在OC项目中创建一个swift文件的时候,Xcode 会提示 需要创建一个桥接文件,点确定...

    一、OC调用swift文件

    二、swift调用OC文件

    三、注意和总结

    添加:

    四、自定义桥接文件 

    一、OC调用swift文件

      在OC项目中创建一个swift文件的时候,Xcode 会提示 需要创建一个桥接文件,点确定创建桥接文件,Xcode会自动创建一个桥接文件

    名字:工程名-Bridging-Header.h

    这个桥接文件是 swift 调用OC文件的时候用的

    1、

      进入TARGETS ->Build Settings -> Packaging 中

    设置Defines Module为YES

    设置 Product Module Name ,也可以不设置,默认为工程的名字。这个在后面会用到

    2、

      在swift写一个类

    注意这个类一定要继承NSObject,不然在OC中没法用

    class hello: NSObject {

        var address : String
        var gender: String
       
        init(address:String,gender:String){
            self.address = address
            self.gender = gender
        }
       
        func method() {
            print("message \(self.address + self.gender)")
        }
    }

    3、

      在OC需要用到的swift文件中 导入文件 "Product Module Name -Swift.h"  因为 Product Module Name 默认是工程的名字

    所以直接导入 #import "工程名-Swift.h"

    4、

      记着写完先command +B编译一下,如果没有报错就可以在OC文件调用swift中的类了

    hello *helloss = [[helloalloc]initWithAddress:@"上海"gender:@"男"];
    [helloss method];

     

    二、swift调用OC文件

      在swift项目中创建一个OC文件的时候,Xcode 会提示创建一个桥接文件 点确定创建桥接文件,Xcode会自动创建一个桥接文件

    名字:工程名-Bridging-Header.h

      把swift需要用到的OC文件的头文件放到桥接文件里 工程名-Bridging-Header.h

    例如:

    1、

    这个就是一个OC文件
    //#import "sec.h"
    #import <UIKit/UIKit.h>
    @interface sec : UIViewController
    -(void)actionMake;
    @end
     

    2、

    在桥接文件中把需要用到OC的头文件导入进去
    #import "sec.h"
     

    3、

    编译一下,就可以在swift中用swift的语法调用OC文件的方法了
    let second = sec()
    second.actionMake()

     

    三、注意和总结

    注意:

    1、OC项目在导入swift文件前 先按照系统提示创建桥接文件,
    2、在 targets -> Build Settings -> Packaging  中设置Defines Module 为YES
    3、在OC中调用swift文件的时候,swift中的类 要继承NSObject
    不然没办法在OC中调用
    4、OC中调用swift文件需要导入”工程名 -Swift.h"
         (这个是build Setting -> Packaging->Product Module Name 的名字,而这个属性默认是工程的名字)
    5、写完记得command + B 编译 一下
    6、swift项目 引用OC文件也需要创建 桥接文件,在这个桥接文件中导入OC文件的头文件
    7、桥接文件只有一个,作用只是为了 swift 引用OC文件,OC引用swift 文件虽然也需要创建桥接文件
            但是不需要在桥接文件中 导入swift文件
    8、如果一个项目既有OC引用swift 也有swift引用OC ,就先设置OC调用swift文件
         在桥接文件 导入OC文件,OC可以定义PCH文件导入”工程名 -Swift.h" 

     

     

    四、自定义桥接文件 

     

    如果不用Xcode提示创建桥接文件也可以自定义一个桥接文件

     

    1     使用 Header File  把里面的内容清空。

     

    2、 这文件名可以自定义, 一般还是用 工程名-Bridging-Header.h   例如app - file.h

     

    3    然后在 Build Setting -> Swift Compiler - Code Generation中

     

    4、设置Objective-C Bridging Header 为自定义的桥接文件相对于工程的绝对路径,也就是项目总文件夹的路径,如果在第一层,就直接写自定义的桥接文件的名file.h,如果在下一层,文件夹/桥接文件 app/file.h 
    展开全文
  • OC项目引入使用swift编写的三方后,报错 错误描述:The “Swift Language Version” (SWIFT_VERSION) build setting must be set to a supported value for targets which use Swift. This setting can be set ...

    OC项目引入使用swift编写的三方库后,报错

    • 错误描述:The “Swift Language Version” (SWIFT_VERSION) build setting must be set to a supported value for targets which use Swift. This setting can be set in the build settings editor.
    • 解决办法
      1. 选中Pods项目
      2. TARGETS选择对应的使用swift编写的三方库
      3. 切换到Build Setting选项
      4. 在搜索框输入swift language搜索
      5. 将Swift Language Version中的Unspecified改为对应的Swift版本(Swift 3.2)
      6. 重新build项目,这是可能会报一些Swift的语法错误,修改一下就OK了。
        Alt text
    展开全文
  • #### 1、OC工程项目导入Swift 版本的framework静态后,模拟器和真机编译都通过,但是模拟器环境下无法调用里面的类,真机环境可以 #### 2、如果是Swift项目工程引入这个Swift静态没有任何问题 1、 真机可以...
  • swift导入oc第三方

    2019-05-05 15:31:39
    swift导入oc第三方 前言 对于ios开发而言,目前很多第三方或者demo还是以oc为主,swift相关的资料很少,这篇文章就结合博主的开发实例对在swift工程中导入并使用oc版本的第三方进行阐述。 正文 1.编写oc桥接头...

    swift导入oc第三方库

    前言

    对于ios开发而言,目前很多第三方库或者demo还是以oc为主,swift相关的资料很少,这篇文章就结合博主的开发实例对在swift工程中导入并使用oc版本的第三方库进行阐述。

    正文

    1.编写oc桥接头文件

    顾名思义,将oc编写的库桥接到swift工程里的头文件。
    结合实战,首先我在项目工程的根目录下创建一个名为xxxx.h的.h文件,内容如下,暂时不去修改:

    #ifndef xxxx_h
    #define xxxx_h
    #endif 
    

    接着,在项目的targets里的Build Settings选项里,找到Objective-c Bridging Header选项:

    在这里插入图片描述
    将这一项设置为刚刚创建的.h文件,如“xxxx.h”

    2.导入第三方库

    做完第一步,准备工作就已经做好了,接下来也很简单。我在这里分两种情况进行阐述。
    (1)framework形式导入的第三方库:
    例如集成支付宝的sdk(https://docs.open.alipay.com/204/105295/),导入后项目里会存在AlipaySDK.framework文件。这个时候在swift中,你还是不能直接引用支付宝相关的类和方法的,这个时候,我们在刚刚创建的桥接文件里,加上:

    #ifndef xxxx_h
    #define xxxx_h
    //导入支付宝的OC的头文件
    #import <AlipaySDK/AlipaySDK.h>
    #import <AlipaySDK/APayAuthInfo.h>
    #endif 
    

    然后你会发现,在代码里,你就可以正常调用支付宝SDK中的类和方法了,就这么简单。
    (2)直接拷贝的第三方库:
    例如第三方客服平台Udesk的集成(http://www.udesk.cn/doc/ios/udesksdk_ios/),按其要求手动将第三方工程文件导入你的项目中后,你的项目会存在如下的文件夹:

    此时,仍然需要在桥接文件里将你所需要用到的类文件导入,如:

    #ifndef xxxx_h
    #define xxxx_h
    //导入Udesk的OC的头文件
    #import "UdeskSDK/SDK/UdeskAgent.h"
    #import "UdeskSDK/SDK/UdeskCustomer.h"
    #import "UdeskSDK/SDK/UdeskManager.h"
    #import "UdeskSDK/SDK/UdeskMessage.h"
    #import "UdeskSDK/SDK/UdeskOrganization.h"
    #import "UdeskSDK/SDK/UdeskSetting.h"
    #import "UdeskSDK/UDChatMessage/Udesk.h"
    #endif 
    

    然后,在项目targets的general选项中,找到“Linked Frameworks and Libraries”,将第三方库中的.a文件添加进去:


    点击add other…之后选择.a文件即可。接下来你就可以在swift中调用第三方库的类和方法了。

    swift导入oc第三方库的方法就说到这,欢迎留言讨论~

    展开全文
  • 首先就是在 targets->Build Setting ->Packaging 中设置 Defines Module为YES  然后创建swift文件时会生成"文件名-Bridging-Header.h"这样一个桥接文件 怎样使用cocoapods就不多... 因为swift使用的是框架而不是静态

    首先就是在 targets->Build Setting ->Packaging 中设置 Defines Module为YES

      然后创建swift文件时会生成"文件名-Bridging-Header.h"这样一个桥接文件

    怎样使用cocoapods就不多说了

    最重要的就是在Podfile里面加上use_frameworks!   因为swift使用的是框架而不是静态库



    展开全文
  • OCSwift混合使用

    2017-07-11 09:13:02
    随着swift趋向于稳定,越来越多的公司启动的新项目也想使用swift过把瘾,使用swift的好处与弊端不再赘述。目前版本是swift3.0,而且Xcode9beta版中已经更新到swift4.0。使用swift开发是大趋势,...OC引用Swift第三方
  • 最近在研究swift,就我看来,swift确实是比OC更优秀的语言,这可以体现在很多方面,网上已经对比的很透彻,就不一一赘述。 今天研究了一下如何在OC项目中使用swift文件,即OCswift的混编问题,发现在OC中要使用...
  • swift开发过程中我们难免会使用一些OC的开源来附注项目开发。这就涉及到OCswift的混编了,正好本人最近也在模仿斗鱼直播的项目,自己也使用了OC的第三方,今天就给大家介绍一下自己的使用过程。 一、导入第...
  • OCSwift混编Pod引入第三方的问题 问题描述:Swift应用OC 的开源框架,需要创建一个桥接头文件,问题就出在这个看似简单,却隐藏着一个巨大的问题:一切都按部就班的在桥接头文件中引入了OC 头文件,但是...
  • OC 项目中使用基于 Swift 的 CocoaPods 随着 Swift 的流行,各种神奇的也开始有对应的 Swift 版本了,而其中一些更神奇的却只有 Swift 版本… 正巧接手了一个前人用 Swift 写的项目,里面有一个...
  • 之前在开发是遇到了在OC文件中调用Swift对象的变量调用不到的问题,这里总结一下: 1.首先我们一个Swift项目TestProject。 2.建立一个Swift的文件继承自NSObject名字为SwiftFile.swift,并声明一个字符串变量...
  • 最近在做一个swift的项目,但是用到了一个oc的刷新框架,建立了桥接后导入框架发现不提示方法名称,百度了好久最好找到解决方法。 1.第一步首先删除 此目录下的这个文件夹:~/Library/Developer/Xcode/DerivedData ...
  • OC项目使用swift

    2018-02-02 16:54:34
    1.新建Swift File命名为Common,创建完成会提示是否创建桥接文件,选择Create Bridging Header, 在BeiSu-Bridging-Header文件添加你想引用OC的文件或者第三方 2.TARGETS - Build Settings 搜索Defines Module, ...
  • 这里主要说几个关于cocoapods导入三方需要注意的问题和我遇到的坑 1、swift语言使用cocoapods配置...2、swift调用oc的三方  a、要建立一个桥接文件,然后在target——>build setting中搜索bridg 把Objectiv
  • OC中调用Swift代码方法

    2018-06-03 09:27:48
    最近在项目中使用到了Swift语言写的第三方的框架,所以在这里将OC中使用Swift的方法说明一下。1.首先要在Build Setting中进行相关配置2.在Podfile文件中要加上use_frameworks!为什么要加use_frameworks!呢?首先需要...
  • 项目中有这个需求,查看了很多资料,自己再Mark一下: 1、如果项目中没有swift文件,需要创建一...3、在pods中找到集成的swift三方,在Build Settings中搜索swift language version,改成三方所支持的最高版本...
  • 前言近来开始用swift撸App,想用做一些数据持久化的尝试,数据持久化就五种方法, plist属性列表, NSUserDefaults偏好设置, NSArchieve归档和解档, SQLite3或FMDB, Core Data 前三种对增删数据的情况不大友好,...
  • 随着 swift 的不断完善 项目中或多或少 有可能会用到 swift 的第三方 而有时候你又需要把你的项目打包给别的公司去用,就需要OCswift 混合打包  现在提供一种分开打包的方法: 在自己的项目中你可以直接用桥...
  • SwiftOC 互相调用

    2018-07-20 16:19:07
    Swift 调用 OC Swift 调用 OC 分为两种常见情况,一种是直接在 Application 的 project 中使用;另一种情况是,在 framework 开发中使用。 对于互相调用的原理,如下图所示,更详细的内容可以参考 《Using Swif ...
1 2 3 4 5 ... 20
收藏数 2,086
精华内容 834