gpt4 book ai didi

swift - 如何在 TableView 中插入属性列表字典

转载 作者:行者123 更新时间:2023-11-30 11:25:38 24 4
gpt4 key购买 nike

我遇到了一个问题,也许有人可以帮助我解决。我有一个以字典形式排列的属性列表文件。我想在 TableView 中显示属性列表中的信息。但我只想在表格中显示特定部分。

this is how my property list looks like

正如我所说,我只想将列表的特定部分插入表中。比如我想只显示第2项的信息。我希望第2.1项、第2.2项、第2.3项的部分显示在表格中。目前我能做的就是在没有任何过滤器的情况下查看所有信息,所有内容都显示在表格 View 中,第 1 项和第 3 项中的所有数据。

这是我的代码

import UIKit

class PlcStaViewController: UIViewController, UITableViewDelegate,UITableViewDataSource {

@IBOutlet weak var Serch: UITextField!
@IBOutlet weak var StationTable: UITableView!

let cellReuseId = "cell"
var policeName:[String] = []
var myRawData:[String:[String:[String:NSObject]]] = [:]
override func viewDidLoad() {
super.viewDidLoad()

self.StationTable.register(UITableViewCell.self, forCellReuseIdentifier: cellReuseId)

getData()
StationTable.delegate = self
StationTable.dataSource = self
}

fileprivate func getData ()
{
//get plist
let myPlist = Bundle.main.path(forResource: "Property List", ofType: "plist")!
let StationData = NSDictionary(contentsOfFile: myPlist)

//get raw data
myRawData = StationData as!Dictionary
//print (myRawData)

//get data from first key
let Stations:[String:NSObject] = StationData as! Dictionary
for singleName in Stations
{
//print(singleName.key)
//policeName.append(singleName.key)

let StatData:[String:[String:NSObject]] = singleName.value as! Dictionary
for singelStat in StatData
{
//print (singelStat.key)
policeName.append(singelStat.key)
}

}
}

@IBAction func SerchBtn(_ sender: UIButton) {
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.policeName.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let myCell:UITableViewCell = (StationTable.dequeueReusableCell(withIdentifier: cellReuseId) as UITableViewCell?)!
myCell.textLabel?.text = policeName[indexPath.row]


return myCell
}
}

有人知道我该怎么做吗?

最佳答案

在我们找到可能的解决方案之前,需要注意一些快速事项...

    let StationData = NSDictionary(contentsOfFile: myPlist)

//get raw data
myRawData = StationData as!Dictionary
//print (myRawData)

//get data from first key
let Stations:[String:NSObject] = StationData as! Dictionary

这三行应该可以压缩为

 let stationData = NSDictionary(contentsOfFile: myPlist) as? [String: Any]

我建议使用保护语句,而不是使用 ! 强制展开。

guard let stationData = NSDictionary(contentsOfFile: myPlist) as? [String: Any] else {
print("[DEBUG] - station data was not set")
return
}

其次,我不认为属性列表应该用作数据存储。我个人会拥有一个包含此信息的 JSON 文件,但这取决于个人喜好。

一旦你从列表中找到了你的字典。你想做的事情实际上非常简单。而不是遍历整个字典。只需选择您想要使用的部分即可。

if let item2 = stationData["item 2"] as? [String: Any] {
// process item 2
}

这是我在 Playground 上运行的代码:

guard let myPlist = Bundle.main.path(forResource: "Property List", ofType: "plist") else {
print("[DEBUG] - myPlist not found")
return
}

guard let stationData = NSDictionary(contentsOfFile: myPlist) as? [String: Any] else {
print("[DEBUG] - station data not loaded")
return
}

if let item2 = stationData["item 2"] as? [String: Any] {
for (key, value) in item2 {
print("\(key) \(value)")
}
} else {
print("[DEBUG] - item 2 not loaded")
}

关于swift - 如何在 TableView 中插入属性列表字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50774906/

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