Я реорганизовал свои коды, например, добавил три кнопки и назначил действия для этих кнопок. при нажатии на эти кнопки я могу подключаться и выполнять запросы по отдельности, например:
import UIKit
class ZVC: UIViewController, SQLClientDelegate {
func error(_ error: String!, code: Int32, severity: Int32) {
print("\(error!) \(code) \(severity)")
}
var strPass:String = "",strUName:String = "",strDBName:String = "",strIP:String = ""
var client:SQLClient!
var uSonuc1: [String] = []
var uSonuc2: [String] = []
var uSonuc3: [String] = []
var cell:UITableViewCell!
var rowCount:Int!
@IBOutlet weak var btnO3: UIButton!
@IBOutlet weak var btnO2: UIButton!
@IBOutlet weak var btnO1: UIButton!
@IBOutlet weak var tv1: UITableView!
@IBOutlet weak var tv2: UITableView!
@IBOutlet weak var tv3: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
let defaults = UserDefaults.standard
if let str1 = defaults.string(forKey: "DBIP") { strIP = str1 }
if let str2 = defaults.string(forKey: "DBName") { strDBName = str2 }
if let str3 = defaults.string(forKey: "DBUser") { strUName = str3 }
if let str4 = defaults.string(forKey: "DBPass") { strPass = str4 }
}
@IBAction func btn3(_ sender: Any) {
client = SQLClient.sharedInstance()!
client.delegate = self
client.connect(strIP,username: strUName,password: strPass,database: strDBName){ success in
if success {
self.client.execute("select IL_ILCE as SONUC3 from IL_ILCE order by IL_ILCE") {
results in
for table in results as! [[[String:AnyObject]]] {
for row in table {
for (columnName, value) in row {
print("\(columnName) = \(value)")
if(columnName == "SONUC3"){
let newVal3 = value as? String ?? ""
self.uSonuc3.append(newVal3)
}}}}
self.client.disconnect()
DispatchQueue.main.async { self.tv3.reloadData() }
}}
else{}
}
}
@IBAction func btn1(_ sender: Any) {
client = SQLClient.sharedInstance()!
client.delegate = self
client.connect(strIP,username: strUName,password: strPass,database: strDBName){ success in
if success {
self.client.execute("select MUSTERI_ADI as SONUC1 from MUSTERI order by MUSTERI_ADI") {
results in
for table in results as! [[[String:AnyObject]]] {
for row in table {
for (columnName, value) in row {
print("\(columnName) = \(value)")
if(columnName == "SONUC1"){
let newVal1 = value as? String ?? ""
self.uSonuc1.append(newVal1)
}}}}
self.client.disconnect()
DispatchQueue.main.async { self.tv1.reloadData() }
}}
else{}
}
}
@IBAction func btn2(_ sender: Any) {
client = SQLClient.sharedInstance()!
client.delegate = self
client.connect(strIP,username: strUName,password: strPass,database: strDBName){ success in
if success {
self.client.execute("SELECT UserId AS SONUC2 FROM Usertbl") {
results in
for table in results as! [[[String:AnyObject]]] {
for row in table {
for (columnName, value) in row {
print("\(columnName) = \(value)")
if(columnName == "SONUC2"){
let newVal2 = value as? String ?? ""
self.uSonuc2.append(newVal2)
}}}}
self.client.disconnect()
DispatchQueue.main.async { self.tv2.reloadData() }
}}
else{}
}
}
}
extension ZVC:UITableViewDelegate, UITableViewDataSource{
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
switch tableView {
case tv1:
rowCount = uSonuc1.count
case tv2:
rowCount = uSonuc2.count
case tv3:
rowCount = uSonuc3.count
default:
break
}
return rowCount
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
switch tableView {
case tv1:
let cell1 = tableView.dequeueReusableCell(withIdentifier:"cel1" , for: indexPath)
cell1.textLabel?.text = uSonuc1[indexPath.row]
cell = cell1
case tv2:
let cell2 = tableView.dequeueReusableCell(withIdentifier:"cel2" , for: indexPath)
cell2.textLabel?.text = uSonuc2[indexPath.row]
cell = cell2
case tv3:
let cell3 = tableView.dequeueReusableCell(withIdentifier:"cel3" , for: indexPath)
cell3.textLabel?.text = uSonuc3[indexPath.row]
cell = cell3
default:
break
}
return cell
}
}
Но я хочу выполнить эти действия без нажатия какой-либо кнопки в viewDidLoad (). Поэтому я добавил этот код ниже после UserDefaults в viewDidLoad () {}:
btnO1.sendActions(for: .touchUpInside)
btnO2.sendActions(for: .touchUpInside)
btnO3.sendActions(for: .touchUpInside)
Сборка прошла успешно, но после запуска приложения, когда приложение viewDidLoad закрывается. Например, из этих трех строк кода, если я использую только одну строку, подобную этой:
//btnO1.sendActions(for: .touchUpInside)
btnO2.sendActions(for: .touchUpInside)
//btnO3.sendActions(for: .touchUpInside)
, в этом случае проблем с выполнением действия btn02 не возникает. Но я хочу выполнить все эти действия один за другим. Как я могу решить эту проблему.