oc项目中使用swift框架

2019-03-21 15:53:16 liuyong0214 阅读数 297

项目中有这个需求,查看了很多资料,自己再Mark一下:

1、如果项目中没有swift文件,需要创建一个,名字随意,同时会让生成一个(项目名-Bridging-Header.h)的文件,一并生成

2、cocoapod集成所需要的三方库到项目中

3、在pods中找到集成的swift三方库,在Build Settings中搜索swift language version,改成三方库所支持的最高版本

4、点击项目->targets->build settings 搜索module将
     1.enable modules
     2.link frameworks automatically
     两个设置成YES

这样就大功告成

如果想使用自己刚创建的Swift文件,可以在.pch文件中引用头文件#import "项目名-Swift.h"

这个文件是系统自动创建好的,是隐藏的,可以直接引用,这样就可以在OC项目中使用刚创建的Swift文件了

2016-05-16 16:29:11 gaoqinghuadage 阅读数 2659

在 OC 项目中使用基于 Swift 的 CocoaPods 库

随着 Swift 的流行,各种神奇的库也开始有对应的 Swift 版本了,而其中一些更神奇的库却只有 Swift 版本…
正巧接手了一个前人用 Swift 写的项目,里面有一个非常关键的图表库,找了半天硬是没有发现类似的 OC 版开源库。出于不想造轮子的心态,就让我们这些”落后”的 OC 党想办法兼容这些库吧!好在苹果为了推广这门新语言已经做好了准备工作,虽然还是需要绕个路,但是比起造轮子来,还是简单了不少。

因为项目是用 CocoaPods 来管理第三方库的,所以这次的兼容工作也会在 CocoaPods 上展开。不过道理还是那个道理,如果没有用到 CocoaPods 的话,直接跳过下面关于 Podfile 的那一步就好了。

Podfile

要用 CocoaPods,首先要修改的当然是 Podfile,这是最简单的一步,只需要在文件开始加上这一句:

1
use_frameworks!

这是告诉 CocoaPods:“请把我要用到的第三方库用动态框架的形式集成进来”。
因为 Apple 不允许开发者构建内含 Swift 代码的静态库,所以要往 OC 项目中集成第三方 Swift 代码的时候就只能通过动态框架( framework )的形式了。

而 CocoaPods 还不能很好地将 framework 和静态库混编到一起,所以要么不用 framework,要用就要全部用上。关于这一点,CocoaPods 官博上的原话是这样说的:

This is an all or nothing approach per integrated targets, because we can’t ensure to properly build frameworks, whose transitive dependencies are static libraries.

Xcode配置

这一步的操作比较绕,但总体来说还是简单的。

首先在你的项目中任意创建一个 Swift 文件,这时候聪明的 Xcode 会问你需不需要它帮助你创建一个 Bridging 文件。
bridging-header

嘛,这当然是最好不过了,然而如果(像我这样)手贱点了 Don’t create ,那以后不管你创建再多的 Swift 文件,它都不会问你了。不过,这当然是有手动操作的途径:

  1. 手动创建一个头文件,名字叫 Your_Product_Module_Name-Bridging-Header.h,注意不是 Project_Name
  2. 确保你的项目目录下至少有一个 Swift 文件。
  3. 确保在 Targets 的 Build Settings 里,Product Module Name 是有值的。(如果没有,直接设置为 $(PRODUCT_NAME) 就可以了)
  4. 将 Project 的 Build Settings 里的 Defines Modules 设置为 Yes。(如果项目里没有创建过 Swift 文件的话,这个设置可能是不可见的)

配置完成!进入代码环节!

代码

其实也不需要什么代码啦。

完成了上面的所有步骤之后,Xcode 会自动生成一个名为 Your_Product_Module_Name-Swift.h 的文件,以后只要在需要使用到 Swift 代码的地方 import 这个文件就可以了。
现在已经可以直接按照 OC 的语法去调用 Swift 里的属性和方法了,开始愉快地 coding 吧 :)

P.S. 为了避免循环引用,-Swift.h 文件只能在 .m 文件中 import。如果需要在 .h 文件中使用,就只能用 @class 来前向声明。


2016-02-14 14:15:37 iOS_wq 阅读数 6151

OC项目引入Swift方法

在OC项目中,有可能会遇到需要引入Swift写的第三方库,下面整理下OC项目如何使用Swift库

1.在已有的OC工程中新建一个Swift文件,命名为Test.swift,会弹出提示,选择Create Bridging Header建立桥接文件,系统会建立“工程名-Bridging-Header.h”




















2. 配置工程

设置Defines Module 为Yes


设置Product Module Name 为当前工程名 (有时系统会自动为我们设置好)


此时系统会为工程创建一个“工程名-Swift.h”的文件(不会显示出来,可以引用),此文件不可手动创建,必须使用系统创建的

3.测试是否成功

新建一个Swift文件,写一个Swift的函数

import UIKit

class Test1: NSObject {

    func show()
    {
        print("hello baby!")
    }
}

在OC工程里调用该函数


成功!

以后在使用的地方直接引用"工程名-Swift.h",不需要引用Swift文件














2016-09-11 13:48:00 weixin_30764137 阅读数 27

swift现在使用越来越多了,一些主流的框架或者效果比较好的demo都陆陆续续使用swift写了.所以,要学会如何在oc的项目中调用swift.

这里主要借助一个桥梁文件,这个桥梁文件一般在你导入swift代码或者创建swift代码的时候会询问你是否创建,这个时候要选择创建,然后就可以在oc项目里引入桥梁文件,从而可以创建swift对象,使用其相应方法了.

但是这里有可能会出现oc中无法调用swift代理方法的情况,下面两个学习资料对这块有比较详细的介绍,可以学习一下.

 

参考资料:iOS-Swift和Object-C的混合编程

oc中无法调用swift代理方法解决办法:oc中对swift的代理进行调用

 

最后是我自己写的一个小demo:

demo:ocPlaySwift (提取码:4734)

转载于:https://www.cnblogs.com/gaoxiaoniu/p/5784092.html

2018-01-18 14:38:01 dylan_lwb_ 阅读数 939

1.新建Swift File命名为Common,创建完成会提示是否创建桥接文件,选择Create Bridging Header, 在BeiSu-Bridging-Header文件添加你想引用的OC的文件或者第三方


2.TARGETS - Build Settings 搜索Defines Module, 设置为Yes, 设置之后Xcode会自动在Objective-C Generated Interface Header Name创建 项目名-Swift.h文件, 该文件很重要, 虽然在项目目录看不见?

3.在写swift代码前, 先在Common.swift配置常用的"宏"


4.创建Network.swift配置网络请求工具类, 可以参考我之前写的一篇博客, http://blog.csdn.net/dylan_lwb_/article/details/53535460

5.开始写swift代码, 未完待续