gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 19:35:31 26 4
gpt4 key购买 nike

我正在构建一个小实用程序来将 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com