【发布时间】:2019-02-28 07:44:39
【问题描述】:
致命错误超出范围这是日志文件
Alamofire URL 请求在循环中,系统的断点已经是 44,而不是在获取数组的第一个值后的第一个索引。
我尝试在循环之外打印数组,但它只是给了我一个空数组打印日志只是 []
let url = "http://localhost:8080/iostest/selectstudents.php"
let parameters: Parameters=[
"StatusCodeID":"2",
"subjectCode":"ENG 099",
"section":"BSIT 2-2BSIT-01"
]
Alamofire.request(url, method: .post, parameters: parameters).responseJSON{
response in
let json = response.data
if let result = response.result.value {
//converting it as NSDictionary
let jsonData = result as! NSDictionary
//displaying the message in label
let x = jsonData.value(forKey: "Students") as! NSArray
for dict in x {
let dictone = dict as! NSDictionary
ArrayStudentNumber.append(dictone["StudentNumber"] as! String)
ArraySection.append(dictone["Section"] as! String)
ArraySemester.append(dictone["Semester"] as! String)
ArraySubjectCode.append(dictone["SubjectCode"] as! String)
ArraySchoolYear.append(dictone["SchoolYear"] as! String)
}
}
let arraycount = ArrayStudentNumber.count
var counter = 0
while counter < arraycount{
print(counter)
var currentindex = counter
print (ArrayStudentNumber[counter])
let url2 = "http://localhost:8080/iostest/selectstudentsinfo.php"
var parameters2: Parameters=["studentNumber" : ArrayStudentNumber[currentindex]]
Alamofire.request(url2, method: .post, parameters: parameters2).responseJSON{
response in
let json = response.data
if let result = response.result.value {
print (response)
//converting it as NSDictionary
let jsonData = result as! NSDictionary
//displaying the message in label
let x = jsonData.value(forKey: "StudentsInfo") as! NSArray
for dict in x {
let dictone = dict as! NSDictionary
ArrayFirstname.append(dictone["Firstname"] as! String)
ArrayLastname.append(dictone["Lastname"] as! String)
ArrayMiddlename.append(dictone["Middlename"] as! String)
ArrayCollege.append(dictone["College"] as! String)
ArrayCourse.append(dictone["Course"] as! String)
}
}
}
counter += 1
}
var loopcounter = 0
let thisarraycount = ArrayFirstname.count
while loopcounter < thisarraycount{
var insertstatemanet: OpaquePointer? = nil
var insertsql = "insert into tableStudentInfo(StudentNumber,Firstname,Lastname,Middlename,College,Course,SubjectCode,Section,Semester,Schoolyear) values ('\(ArrayStudentNumber[loopcounter])','\(ArrayFirstname[loopcounter])','\(ArrayLastname[loopcounter])','\(ArrayMiddlename[loopcounter])','\(ArrayCollege[loopcounter])','\(ArrayCourse[loopcounter])','\(ArraySubjectCode[loopcounter])','\(ArraySection[loopcounter])','\(ArraySemester[loopcounter])','\(ArraySchoolYear[loopcounter])';"
//isolate sql query and validate statements
sqlite3_prepare_v2(db, insertsql, -1, &insertstatemanet, nil)
//
if sqlite3_step(insertstatemanet) == SQLITE_DONE{
print("Inserted", "\(ArrayStudentNumber[counter])")
}
sqlite3_finalize(insertstatemanet)
}
loopcounter = loopcounter + 1
}
}
【问题讨论】:
-
您的代码没有明显缩进,所以我会说您缺少 Asynchrone 概念。另外,在 Swift3+ 中避免使用 NSDictionary、NSArray、NSStuff,更喜欢它的 Swift 等价物。
-
缩进是什么意思?