【问题标题】:Appcelerator Hyperloop - using 3rd party swift libraryAppcelerator Hyperloop - 使用 3rd 方 swift 库
【发布时间】:2017-06-29 05:06:34
【问题描述】:

我正在尝试使用 Hyperloop 以使用第三方开源库。我要使用的库是Sweet Alert iOS

图书馆有一个swift file。我已将此文件放在项目主文件夹内的 src 目录中(它必须在 src 文件夹中吗?我可以在项目中使用其他文件夹吗?子目录呢?)。

根据 Titanium 文档:

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

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

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

它有效。但是,如果我尝试要求 swift 文件中的任何类,我会收到一个错误,即它找不到架构 x86_64 模块。

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

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

open class SweetAlert

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

我在这里错过了什么?

编辑

一些进展... 所以我发现我需要一个appc.js 文件来定义src 框架和MyFramework 的名称。我所做的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(!) 准备好用于生产应用了吗?

【问题讨论】:

    标签: appcelerator appcelerator-titanium appcelerator-hyperloop hyperloop appc-hyperloop


    【解决方案1】:

    我在创建一个简单的 Swift 类并将其包含在 Titanium/Appcelerator 项目中时收到了类似的错误,其中 appc.js 文件设置为它们在稀疏文档中的显示方式。只要我不从 Swift 文件中引用该类,该项目将毫无问题地编译并在 Xcode 模拟器中运行。如果我在项目中引用该类,则会出现错误。根据编译日志,Swift 文件确实编译到了项目中,但是这些类最终似乎没有正确链接到 JavaScript 代码中的“require”。

    当我在网上搜索解决方案时,同样的问题到处出现,而 Titanium/Appcelerator 团队从未提出解决方案。我试过 Titanium SDK 6.0.1、6.1.2 和 6.2.0,结果都一样;我尝试将 Swift 代码添加到现有项目和新项目中;我还卸载并重新安装了 Titanium/Appcelerator。 (我什至尝试过运行他们的示例应用程序,但没有成功!)

    当我使用 UIKit 等原生框架时,Hyperloop 确实可以工作,但它似乎还没有准备好用于 3rd 方框架和类的生产应用程序。

    我希望我的发现可以帮助您和其他人调试项目,但很遗憾,除此之外我无法提供太多帮助。

    【讨论】:

    • 你知道如何将它与 3rd 方框架一起使用吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多