AppCelerator Hyperloop-使用第三方Swift库



我正在尝试使用Hyperloop来使用第三方开源库。我想使用的库是甜蜜的警报iOS。

库有一个快速文件。我已经将此文件放入项目的主文件夹中的SRC目录中(必须在SRC文件夹中吗?我可以在项目中使用其他文件夹吗?子目录呢?(。

根据钛文件:

在您的src目录中找到的任何 *swift文件将自动编译

在我的应用中做这样的事情时:

var UIView = require('UIKit/UIView');
Ti.API.info('UIView => ' + UIView);

它有效。但是,如果我尝试需要Swift文件中的任何类

var sweetAlert = require('SweetAlert');
var cancelAnimatedView = require('CancelAnimatedView');

查看SweetAlert源代码时,我还注意到SweetAlert类是open,而其他类只是常规类:

open class SweetAlert

我不是一个迅速的开发人员,所以我真的不知道这意味着什么。

我在这里缺少什么?

编辑

一些进展...因此我发现我需要一个appc.js文件,该文件定义src帧工作和myFramework的名称。并且i Do所做的require应该匹配Swift文件的文件名。现在,当我编译时,我会看到有关Swift汇编的一些更有趣的输出,但是出现错误:

[INFO]  Generating metabase for swift MyFramework /Users/ophir/Documents/Appcelerator_Studio_Workspace/HyperloopTest1/src/SweetAlert.swift
2017-06-29T14:43:44.061Z | ERROR  | An uncaught exception was thrown!
Cannot read property '1' of null
2017-06-29T14:43:44.064Z | ERROR  | Cannot read property '1' of null 

编辑2

我已经清除了Swift文件中的所有脚本,并将其范围缩小到以下失败脚本:

进口基础导入Uikit导入Quartzcore

public enum AlertStyle {
    case success,error,warning,none
    case customImag(imageFile:String)
}
class SweetAlert: UIViewController {
}
class AnimatableView: UIView {
    func animate(){
    }
}

如果我删除func animate() { },它将不会失败。即使此功能在一个SweetAlert类中,它也会失败。从我阅读的本文中,这是一个非常标准的Swift代码。

所以这让我感到奇怪 - Hyperloop 2.0.0(!(准备生产应用程序?

我在创建一个简单的Swift类时会收到类似的错误,并使用Appc.js文件设置了它们在稀疏文档中显示的方式。只要我不参考Swift文件中的类,该项目就不会毫无问题地编译并在Xcode Simulator中运行。如果我在项目中引用该类,则出现错误。基于编译日志,Swift文件确实会编译到项目中,但是这些类似乎并未正确链接到" require" - ing-javascript代码中。

当我在线搜索解决方案时,同样的问题出现了,钛/appcelerator团队从未提出解决方案。我尝试了钛SDK 6.0.1、6.1.2和6.2.0,所有结果都相同。我尝试在现有项目和新项目中添加Swift代码;我还卸载并重新安装了钛/appcelerator。(我什至尝试过没有运气的示例应用程序!(

当我使用本机框架(例如Uikit(时,Hyperloop确实有效,但是它似乎还没有为第三方框架和类的生产应用程序做好准备。

我希望我的发现能帮助您和其他人调试项目,但是不幸的是,我认为我无法在此外提供太多帮助。

相关内容

最新更新