class ViewController3: UIViewController, UITableViewDataSource, UITableViewDelegate {
var Person_data = [Person]()
override func viewDidLoad() {
super.viewDidLoad()
let tb: UITableView = UITableView(frame: CGRect(x: 10, y: 50, width: 200, height:600), style: UITableViewStyle.Plain)
tb.dataSource = self
tb.delegate = self
super.view.addSubview(tb)
fetch_data()
}
func tableView(tableview: UITableView, numberOfRowsInSection section: Int) -> Int {
let rows = Person_data.count
return rows
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
let cell: UITableViewCell = UITableViewCell()
cell.textLabel?.text = Person_data[indexPath.row].name
return cell
}
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
fetch_data()
// reload at this point
}
func fetch_data() {
let tb_fetchRequest = NSFetchRequest(entityName: "Person")
do {
let tb_fetchResults = try my_moc.executeFetchRequest(tb_fetchRequest) as? [Person]
Person_data = tb_fetchResults!
} catch let error as NSError {
print("request error: \(error)")
}
}
}
返回以下数组:
SerialPort.GetPortNames();
通常只有每个名字一次。解决这个问题非常容易,但有谁知道为什么会这样做?
答案 0 :(得分:2)
如果没有关于您的特定环境的更多信息,包括机器配置和注册表信息,则无法回答。但很可能(不满意的)答案是GetPortNames()
只是尽可能地利用可用的信息做到最好。
即。它检查注册表以查看存在哪些端口并返回它们的列表。在某些情况下,多个设备可能会重复使用相同的COM端口号,甚至可能多次使用同一设备(取决于驱动程序),导致端口号在注册表中多次列出。
实际上,在某些情况下,您可能会返回一个目前甚至无效的COM端口名称。即某些设备在某个时间确实存在,但已被删除/断开连接等。并且不再可用。
这是一个经典的“垃圾进入,垃圾出局”问题。
有关该问题的相关信息,您可能希望查看这些Stack Overflow问题:
GetPortNames() returns stale data/Remove stale comport entries in Windows?
SerialPort.GetPortNames() is wrong
SerialPort.GetPortNames() behavior