gpt4 book ai didi

ios - 如何使用扩展更新类中的数组?

转载 作者:行者123 更新时间:2023-11-29 00:58:04 25 4
gpt4 key购买 nike

我有一个正在读取 json 文件的扩展,但这不是问题所在。问题是使用 Collection View 方法更新类中的数组。当我在扩展中打印数组长度时,我得到 3,但是当我在 Collection View 委托(delegate)方法所在的类中打印它时,它打印 0。

extension JSON{

func findmultiple(viewclass: ViewController, @noescape predicate: JSON -> Bool) -> JSON? {

if predicate(self) {
return self
}
else {
if let subJSON = (dictionary?.map { $0.1 } ?? array) {
for json in subJSON {

if let foundJSON = json.findmultiple(viewclass, predicate: predicate) {
let shorten = foundJSON["html"].stringValue
let firstshort = shorten.componentsSeparatedByString(" ")
let secondshort = firstshort[1].componentsSeparatedByString("\r")
let classname = secondshort[0]
if(classname == "STUDY HALL (INSTRUCT)"){
print("skip")
}else{
viewclass.importClass.append(classname)
print("fsgsfg \(viewclass.importgrades.count)") //prints("STUDY HALL", "CHEMISTRY", "PHYSICS")

}


}

}

}

}

return nil
}
}

当我带着方法去类的时候

class ViewController: UIViewController, UICollectionViewDelegate,  UICollectionViewDataSource{
var importClass = [String]()

func parseJSON(json: JSON){

let predicate = {
(json: JSON) -> Bool in
if let jsonID = json["class"].string where jsonID == "sg-header-heading"{

return true

}
return false
}
var backclass = ViewController()
let foundJSON = json.findmultiple(backclass, predicate: predicate)

}

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell: colcell = (collection.dequeueReusableCellWithReuseIdentifier("CELL", forIndexPath: indexPath) as? colcell)!
print(importClass) //prints []
cell.classtitle.text = importClass[indexPath.item] //crashes `index out of range`
}

最佳答案

在你的 ViewController 类中,你的变量被定义为 importClasses ,而在其他地方它的 importClass ,这只是一个拼写错误,如果不是的话,你应该得到一个构建错误。

根据您请求 JSON 的方式,您可能希望在成功检索 JSON 后尝试调用 collectionView.reloadData()

已编辑
findMultiple() 函数正在传递 View Controller 的新实例。它应该通过当前的。let findJSON = json.findmultiple(self, predicate: predicate) 那么你就不需要行 var backclass = ViewController()

关于ios - 如何使用扩展更新类中的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37405590/

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