【问题标题】:Using ios-charts in Swift for ios7+在 Swift 中为 ios7+ 使用 ios-charts
【发布时间】:2018-05-28 14:43:42
【问题描述】:

我正在尝试使用这个图表库,它是我用于 Android 的同一库的一个端口:

https://github.com/danielgindi/ios-charts

由于我使用面向 ios7+ 的 Swift,我决定遵循本指南:

如果你想为 iOS 7 编译:

将代码本身(.swift 文件)拖到您的项目中。遗憾的是,Swift 目前不支持为 iOS 7 编译框架。 确保将文件添加到 Target 成员资格。

所以我基本上完成了将整个 ios-charts 文件夹的副本放在我自己的 .swift 文件旁边的项目文件夹中。

然后删除除 .swift 之外的所有单元,但保留文件/目录结构。有趣的是,我无法更改/添加文件夹中任何文件的目标,因为单击 xcode 中的 .swift 文件时该选项不会显示。

然后我删除一个 UIView 并将类更改为例如条形图视图。

我创建了一个插座,所以我在我的类定义中有这个:

@IBOutlet weak var myStickChart: BarChartView!

但是,我在构建时遇到错误

使用未声明的类型“BarChartView”

这可能是一个简单的问题,但这是我必须使用的第一个 3rd 方库。

我以前尝试过 pod,但决定反对它 - 我宁愿,现在,只要我的目标是 ios7,就可以像 ios-charts 的说明中描述的那样拖入我想使用的 untts迅捷/ios7

【问题讨论】:

  • 可能是一个愚蠢的问题 - 但你的类定义中有include ios-charts
  • 我现在已经扩展了我的问题 - 如果这不是你的意思,你能发布一个例子吗? (我已将所有 .swift 文件包含在我的 ios7+ swift 项目中,并将它们与我的所有目标相关联)
  • 根据你提供的github链接,你需要在你的swift类文件中包含@import Charts
  • 以这种方式安装时是的,但我使用 ios7 兼容方法“将代码本身(.swift 文件)拖到您的项目中。遗憾的是,Swift 目前不支持为 iOS 7 编译框架。确保文件已添加到 Target 成员资格中。”
  • 好吧,我设法让它在 iOS 7 上运行——但这有点乏味。我将添加一个新答案来演示...

标签: ios swift ios-charts


【解决方案1】:

为 iOS 7 实现这个库有它自己的特殊挑战。说明建议您将代码本身(.swift 文件)拖到您的项目中 - 当我一开始这样做时,我拖到了顶级文件夹(就像你一样)但我不能让它工作。

然后我分别复制了每组文件 - 我将它们全部放在同一个文件夹 Charts 中,但我想你可以重新创建文件夹结构。

现在我有一个使用ChartsiOS 7 的简单项目,并且不需要import

为了清楚起见 - 这是我的项目中文件结构的外观 - 不是很优雅,但它有效。

【讨论】:

    【解决方案2】:

    @Tom - 我在我的一个项目中使用了相同的类,我安装它的方式与你完全相同。我可以生成与您看到的相同的错误 - 但前提是我从我的类定义中删除 import Charts

    这是我的类定义开始的样子

    import UIKit
    import Charts
    
    class SharePriceGraphViewController: UIViewController, ChartViewDelegate
    {
        var myStickChart: BarChartView!  // I don't really have this - added for this test :-)
    

    就目前而言,这编译得很好。如果我删除导入 - 我会遇到与您相同的错误。

    【讨论】:

    • 如果我添加“导入图表”我得到“没有这样的模块'图表'-但我也阅读了 iso-charts 说明,例如安装 iso7/swift(而不是 ios8+)忽略正常的安装说明并像我在原始帖子中描述的那样将文件拖入.swift。因此,我没有拖入/添加任何“图表”项目,因为那不是 ios-charts 说明?但也许我错了,如果是这样,我觉得这很令人困惑......(那么适合 SO)
    • 您是像我一样只添加 .swift 文件还是从“将 Charts.xcodeproj 拖到您的项目中。转到您的目标设置,点击“嵌入式二进制文件”下的“+” " 部分,然后选择 Charts.framework" - 如果是,您的项目是否适用于 ios7?
    • 我不确定它是否适用于 ios7。当我尝试时,它失败了,但由于我在该项目中拥有的其他框架。我会尝试创建一个简单的版本,但会在今晚晚些时候(英国时间)
    【解决方案3】:

    以下步骤对我有用:

    1. 使用pod 'Charts'通过cocoapods安装
    2. 现在,如果您尝试编写与charts 相关的任何内容,它将不会读取该文件或类,您将看到类似use of undeclared type xxxxx 的错误。所以对于这个 GoTo ⇾ Project Target ⇾ General ⇾ Linked Frameworks and Libraries ⇾ 点击 + 按钮 并添加 Charts.framework
    3. 转到您想要使用它的班级。 import Charts 现在 您将能够毫无错误地使用此框架。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多