- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个从互联网加载 JSON 文件并将其存储在数组和字典中的项目。当我在 viewDitload 或 viewDidDisappear 中打印 Array 或 Dict 的计数时,我在 JSON 文件中得到的正确计数是 50。但是在对 tableViewDataSource 的 numberOfRows 和 objectForValue 调用中,它返回 0 作为计数。我忽略了一些东西但是在打开和关闭窗口时数组中有信息但是当 tableView 以某种方式重新加载时数组是空的。这是我的代码,非常感谢任何帮助
import Cocoa
class ViewController: NSViewController, NSTableViewDataSource, NSTableViewDelegate {
var coursesDict = [String: Course]()
var coursesArray = [Course]()
@IBAction func refreshTable(_ sender: Any) {
table.reloadData()
}
@IBOutlet weak var table: NSTableView!
func numberOfSectionsInTableView(tableView: NSTableView) -> Int {
return 1
}
func numberOfRows(in tableView: NSTableView) -> Int {
let numOfRows = coursesArray.count
print(numOfRows)
return numOfRows
}
func tableView(_ tableView: NSTableView, objectValueFor tableColumn: NSTableColumn?, row: Int) -> Any? {
return coursesArray[row]
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
if let data = UserDefaults.standard.data(forKey: "courses"),
let savedCourses = NSKeyedUnarchiver.unarchiveObject(with: data) as? [String: Course] {
self.coursesDict = savedCourses
loadDataFromURL()
self.coursesArray = Array(coursesDict.values)
print(coursesDict.count, " appLaunch")
} else {
print("There is an issue")
}
}
override var representedObject: Any? {
didSet {
// Update the view, if already loaded.
}
}
override func viewDidDisappear() {
let encodedData = NSKeyedArchiver.archivedData(withRootObject: coursesDict)
UserDefaults.standard.set(encodedData, forKey: "courses")
print(coursesDict.count, "viewUnload")
}
func loadDataFromURL() {
// Fetch URL
let url = URL(string: "https://www.apple.com/nl/today/static/data/hub/1101000001001110001.json")!
// Load Data
let data = try! Data(contentsOf: url)
// Deserialize JSON
let json = try! JSONSerialization.jsonObject(with: data, options: .allowFragments) as? [String: AnyObject]
let coursesJSON = json?["courses"] as? [AnyObject]
for object in coursesJSON! {
let id = object["id"] as! String
if coursesDict[id] == nil {
let name = object["shortName"] as! String
let program = object["programName"] as! String
let shortDescription = object["shortDesc"] as! String
let mediumDescription = object["mediumDesc"] as! String
let longDescription = object["longDesc"] as! String
let imageURL = object["image"] as! String
let tempCourse = Course(id: id, name: name, program: program, shortDescription: shortDescription, mediumDescription: mediumDescription, longDescription: longDescription, imageURL: imageURL)
coursesDict[id] = tempCourse
}
}
print(coursesDict.count, "loadURL")
}
}
我的 View 上什至有一个按钮可以重新加载 tableView,以防在 tableView 自动重新加载之前未加载信息
最佳答案
问题不在于我的代码。问题在于我的 Xib 中有两个 viewController 实例,所以当我将内容硬编码到数组中时它正在工作,因为两个实例都会有该信息但是来自第二个 viewcontroller 的 viewDidload 从未被调用,因为它是未连接到任何 View
关于arrays - (自己回答)Swift 数组在函数 numberofRows 中返回 0 个计数(在 tableView 中,但在其他任何地方它返回正确数量的 array.count,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44731674/
我想用服务器数据更新一个 TableView 。 class ViewController: UIViewController, UITableViewDataSource, UITableViewD
我正在尝试使用 XML 文件中的条目填充 TableView 。到目前为止,我已经将 XML 文件解析为 Struct 并编写了 titleForHeaderInSection 和 numberOfS
为什么UITableView在行数很大的情况下加载时间比较长? viewDidLoad 和第一个 cellForRowAtIndexPath 函数调用之间需要什么时间? 这些是 numberOfRow
我目前在尝试使用一个值作为 TableView 的 numberOfRows 函数的返回值时遇到问题。在我的 viewDidLoad 中,我有下面的代码,它打印了我需要的值,但是当我尝试返回相同的变量
首先很抱歉,如果格式不正确,第一次这样做。很长一段时间以来,我一直在使用 stackoverflow 寻求帮助,这非常有帮助(谢谢大家),但这是我第一次发布自己的问题。这个问题已被问过很多次,但是当我
我有一个从互联网加载 JSON 文件并将其存储在数组和字典中的项目。当我在 viewDitload 或 viewDidDisappear 中打印 Array 或 Dict 的计数时,我在 JSON 文
我是一名优秀的程序员,十分优秀!