ios - Swift 的新手和困惑 - 在 Swift 类中存储大型常量/数据集

标签 ios csv swift

我正在构建一个小实用程序来将 CSV 文件加载到我的应用程序中并每秒读取下一个值大约 5 次(csv 文件来自传感器记录器)

为此,我使用了这个 csv 库:https://github.com/naoty/SwiftCSV

现在,对于多于几行的 csv 文件,性能/更新率会受到显着影响。问题是我终生无法弄清楚每次调用 SensorRecording.getDatapoints() 时如何不加载 csv 文件

我猜它应该是一个只加载一次的全局类变量,但是在类声明的顶部添加变量“csvURL”和“csv”的相应行会产生一个奇怪的

"SensorRecording.Type does not have a member named 'csvPath'

如何将它存储在该类的全局变量中?

这是 SensorRecording 类代码:

import UIKit

class SensorRecording: UIViewController {

    var cur: Int = 1

    let csvPath = NSBundle.mainBundle().pathForResource("2014-09-21_23-25-32", ofType: "csv")
    let csvURL = NSURL.fileURLWithPath(csvPath!)
    let csv = CSV(contentsOfURL: csvURL!)

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }


    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }



    func getDatapoints() -> NSDictionary {



        let rows = csv.rows

        if (cur == (csv.rows.count-1)) { cur = 1 } else { cur++ }

        return csv.rows[cur]

    }

非常感谢

最佳答案

您的代码或 CSV 库中没有任何内容会导致文件每次都重新加载——在 let csv = CSV(...) 之后,您实际上只是在使用一个几个嵌套的 Array 和 Dictionary 实例。内存

(尽管该 CSV 库的实现不是非常节省内存——数据重复和 header 的 super 重复。)


我原以为您遇到了您在代码示例中描述的性能问题,但现在我看到了您遇到的问题。您不能根据其他属性设置默认属性值,因此您需要在初始化程序中加载 CSV 文件:

class SensorRecording {
    var cur: Int = 1
    var csv: CSV!      // implicitly unwrapped: skip during initialization,
                       // but need to give value before accessing
    init() {
        // load CSV here
        let csvPath = NSBundle.mainBundle().pathForResource("2014-09-21_23-25-32", ofType: "csv")
        let csvURL = NSURL.fileURLWithPath(csvPath!)
        csv = CSV(contentsOfURL: csvURL!)
    }

    func getDatapoints() -> NSDictionary {
        let rows = csv.rows
        if (cur == (csv.rows.count-1)) { cur = 1 } else { cur++ }
        return csv.rows[cur]
    }
}

关于ios - Swift 的新手和困惑 - 在 Swift 类中存储大型常量/数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26004516/

相关文章:

IOS-SWIFT-如何解决 Apple 文档代码中关于 KVO 的警告?为什么 Xcode 自动更正会引入错误?

javascript - 如何格式化 Highcharts 的 xAxis

objective-c - 应用程序终止时尝试保存到 plist

ios - 通过长按为不受支持的设备启用 3D 触摸操作

ios - Phonegap iOS 5.1 和 localStorage

python - 同时读取文件

python - 如何以列形式将字典保存在 csv 中,其中第一行是键,下一行是向量?

ios - Swift Playgrounds 和 Playground 书籍

arrays - swift 错误 : Cannot convert value of type 'ArraySlice' to expected argument type

ios - 如何更改应用的捆绑ID和应用名称