前言:
最近在项目里集成了WeexSDK,Swift项目,不能完全按照官方给的OC例子来搞,中间遇到了一些挺疼的坑,拿出来给大家分享下,希望能够帮到那些和我一样遇到这些坑的萌新们(注意:真的只针对萌新,不喜勿喷,笔者玻璃心,你如果骂我,我肯定也会骂你)

首先,别告诉我你没有看过Weex iOS SDK 集成指南(算了,不装逼了,没看过的去看看吧,你第一步要做的就是集成WeexSDK到你的项目里)如果第一步你完成的很丝滑,而且我也假装你看了Demo,完成了对"hello.js"的渲染,那我们很快就能进入正题,聊聊填坑的事儿了.
你如果已经看到iOS 扩展的文档了,那么恭喜你,你已经迎来了第一个坑: 自定义module,

,这时候,兴奋的你赶紧跑到demo里面,去查看了这个宏,然后你点啊点,发现

早已不写OC好多年的你表情肯定是这样的:

别担心,阿里爸爸已经猜到了你会这样,所以他们建议你创建一个桥接文件把宏写进OC的类里,然后为这个OC类写一个Swift的扩展,在扩展里写你要传递给Weex的module方法(还有一种方法,那就是手动把OC的宏转换成Swift全局的函数,也许想到这个办法的时候你也曾跟我一样绝望)Swift In Weex.具体的您往这儿看:
OC类WXEventModule的.h 实现

OC类WXEventModule的.m 实现

这时候,聪明可人的你可能发现了, "WeexTest-Swift.h"是个什么鬼?别担心,你只要把他改成"YouDemo-Swift.h"就行了.这个.h文件是系统自动生成的,用于在OC类里引用Swift实例,是一个隐形的文件,第一次引进来,只要编译一次就可以找到了.(其实Swift In Weex里面有说,但说的不够详细)

然后在Swift类的扩展里这样:

别忘了把你的module引入到桥接文件

最后,在AppDelegate里面注册一下你的module:
WXSDKEngine.registerModule("WXOpenpageModule", with: NSClassFromString("WXEventModule"))
行了,自定义module的坑踩平了,放下键盘,拿起手机,打一盘王者农药压压惊吧!
接下来说一说Weex下载图片的坑,weexSDK 没有图片下载的能力,需要我们手动实现一个下载器WXImgLoaderDefaultImpl(英俊潇洒,懒癌晚期的我,直接克隆的演示Demo的下载器),细节没什么说的,你只要拖到你的项目里,然后在AppDelegate里注册一下就OK了
WXSDKEngine.registerHandler(WXImgLoaderDefaultImpl(), with: NSProtocolFromString("WXImgLoaderProtocol"))
结束语:
最后奉上我的一发Demo,传送门,我觉得有必要介绍下这个Demo,我实现了一个扫描二维码功能,你可以用他扫描你们前端小伙伴部署到服务器的JSBundle链接,然后直接在控制器里拿到这个链接去渲染,这样开发测试起来还是很方便的嘛,如果帮到了你,也烦请您动动发财的小手,右上角点点star,毕竟做人最重要的是装逼嘛~~

踩坑持续中,不间断更新,欢迎评论交流~!
网友评论