Swift In Weex

简介: ## Swift In Weex 参考 [swift和Objective-C](https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html#//apple_ref/doc/uid/TP40014216-CH10-ID122) [weex]

Swift In Weex

参考 swift和Objective-C

weex iOS SDK 是使用Objective-C,结合部分C写的,
引入swift,需要混编,直接进入正题

SDK集成

  1. 使用cocoaPods 集成跟 使用Objetive-C 一样的集成方式
  2. 导入framework

    • Import the framework you get above and import system framework
      img
    • Add main.js(which is in the WeexSDK.framework) to your main bundle
      img
    • 添加 -ObjC(注意大小写)
      img
  3. import WeexSDK 就像Swift的module 一样
    WeexSDK 已经在build setting 里面打开了define module

img
更多参考这里

module 扩展

因为module 暴露method 是通过Objective-C宏来做的,调用的时候是通过反射,所以swift扩展module通过extension Objective-C的类,以下操作,可以直接在weex 的iOS playground 中进行

  • 新建 WXSwiftTestModule.h/mWXSwiftTestModule.swift文件, 在新建swift文件的时候会提示
    img

选择 Create Bridging Header, 因为我们要在swift中访问Objective-C的一些类,正是通过这个header暴露OC的类给swift,header格式为 yourTarget-Bridging-Header.h,我这里创建完header文件名称为:WeexDemo-Bridging-Header.h

  • WXSwiftTestModule.h/m中实现

    • WXSwiftTestModule.h 中

          #import <Foundation/Foundation.h>
          #import <WeexSDK/WeexSDK.h>
          
          @interface WXSwiftTestModule : NSObject <WXModuleProtocol>
          
          @end
          
    • WXSwiftTestModule.m 中

      WeexDemo-Swift.h 这个文件需要编译一下才可以搜索到,具体的路径
      
      weex/ios/playground/DerivedData/WeexDemo/Build/Intermediates/WeexDemo.build/Debug-iphonesimulator/WeexDemo.build/DerivedSources/WeexDemo-Swift.h
      
      路径具体需要根据自己工程而定
      
          #import "WXSwiftTestModule.h"
          #import "WeexDemo-Swift.h" // swift类和方法 被`Objective-C`识别需要导入
          
          @implementation WXSwiftTestModule
          #pragma clang diagnostic push //关闭unknow selector的warrning
          #pragma clang diagnostic ignored "-Wundeclared-selector"
          
          WX_EXPORT_METHOD(@selector(printSome:callback:)) //swift中定义的方法,XCode 转换成的最终的方法名称,在`WeexDemo-Swift.h`里面查看
          
          #pragma clang diagnostic pop
          
          @end
      
  • swift 中实现
    扩展 OC的类 WXSwiftTestModule ,增加了一个方法,这个方法就是我们要暴露出来,在js中可以调到的

    • WXSwiftTestModule.swift

          import Foundation
          public extension WXSwiftTestModule {
             public func printSome(someThing:String, callback:WXModuleCallback) {
                 print(someThing)
                 callback(someThing)
             }
          }
      `WXSwiftTestModule` 和`WXModuleCallback` 因为是OC的,需要在`WeexDemo-Bridging-Header`中暴露
      • WeexDemo-Bridging-Header.h中

        //
        //  Use this file to import your target's public headers that you would like to expose to Swift.
        //
        #import "WXSwiftTestModule.h"
        #import "WeexSDK.h"

        至此这个swift的简单的module 已经算是开发完成

module 使用

  • 注册module

    [WXSDKEngine registerModule:@"swifter" withClass:[WXSwiftTestModule class]];
    
  • we 文件中使用

        <template>
    <text>Swift Module</text>
       </template>
        
       <script>
         require('weex-components');
       
         module.exports = {
           data: {
       
           },
           ready: function() {
    var swifter = require('@weex-module/swifter');
    swifter.printSome("https://www.taobao.com",function(param){
      nativeLog(param);
    });
           }
       
         };
       </script>
目录
相关文章
|
9月前
|
NoSQL 关系型数据库 数据库
Swift 服务器框架对比
Swift 服务器框架对比
143 0
|
28天前
|
JavaScript 前端开发 Swift
开发语言漫谈-Swift
wift就是个语言的大杂烩
|
1月前
|
安全 Swift iOS开发
【Swift 开发专栏】Swift 与 UIKit:构建 iOS 应用界面
【4月更文挑战第30天】本文探讨了Swift和UIKit在构建iOS应用界面的关键技术和实践方法。Swift的简洁语法、类型安全和高效编程模型,加上与UIKit的紧密集成,使开发者能便捷地创建用户界面。UIKit提供视图、控制器、布局、动画和事件处理等功能,支持灵活的界面设计。实践中,遵循设计原则,合理组织视图层次,运用布局和动画,以及实现响应式设计,能提升界面质量和用户体验。文章通过登录、列表和详情界面的实际案例展示了Swift与UIKit的结合应用。
|
1月前
|
存储 安全 Swift
【Swift 开发专栏】使用 Swift 开发一个简单的 iOS 应用
【4月更文挑战第30天】本文介绍了使用 Swift 开发简单 iOS 待办事项应用的步骤。首先,阐述了 iOS 开发的吸引力及 Swift 语言的优势。接着,详细说明了应用的需求和设计,包括添加、查看和删除待办事项的功能。开发步骤包括创建项目、界面搭建、数据存储、功能实现,并提供了相关代码示例。最后,强调了实际开发中需注意的细节和优化,旨在帮助初学者掌握 Swift 和 iOS 开发基础。
|
NoSQL JavaScript 前端开发
Swift开源
Swift开源
61 0
|
Swift
swift中使用NSClassFromString
swift中使用NSClassFromString
294 0
|
区块链 Swift
当我们在谈SWIFT时,到底在谈什么?
当我们在谈SWIFT时,到底在谈什么?
当我们在谈SWIFT时,到底在谈什么?
|
iOS开发
Swift 2.3升级到Swift 3.0小记
> 阿里云App从Swift 2.1开始使用Swift,随时不断的推进,现在所有的业务代码都用Swift编写。由于Swift 3.0语法上有诸多改变,所以从Swift 2.3升级到Swift 3.0是一件宜早不宜迟的事情。元旦期间抽了点时间做这个升级。 ### 外部依赖 * 目前开源社区对Swift 3.0支持是非常好的,我们依赖的开源组件最新版本都支持Swift 3.0了,所以并没有
1732 0