- 72
- 0
swift小白
我现在做的是对一个已有的本地数据库"data.s3db"查询的app。
已经使用FMDB库,现在的问题是,输出的数组print后为0x60000013edc0这样的数字……是编码方式不对吗?
1.这是模型scoreModel.swift
import Foundation
import UIKit
class scoreModel: NSObject {
var lessonName:String = String()
var lessonCode:String = String()
var creditPoint:Double = Double()
var totalStudentNumber:Int = Int()
var teacherName:String = String()
var semesterName:String = String()
var scoreValue:String = String()
var studentCount:Int = Int()
}
2.这是数据库管理类SQLiteManager.swift
import Foundation
import UIKit
class SQLiteManager: NSObject {
// 0. 将类设计成单例
static let shareInstance : SQLiteManager = SQLiteManager()
override init() {
super.init()
}
// 1. 保存数据库队列对象
var dbQueue : FMDatabaseQueue?
// 2. 打开数据库
func openDB () {
//2.1 设置数据库的路径;
let dbPath = Bundle.main.path(forResource:"data", ofType: "s3db")
//2.2 创建数据库
dbQueue = FMDatabaseQueue(path: dbPath)
}
// 3. 查询数据库,并将数据以数组的形式返回:
func queryDB(sql: String) -> NSMutableArray {
openDB ();
// 3.1 创建可变数组
let resultArray = NSMutableArray()
// 3.2 执行sql
SQLiteManager.shareInstance.dbQueue?.inDatabase { (db) in
let dbResult: FMResultSet! = db.executeQuery(sql, withArgumentsIn:[])
// 遍历结果
while dbResult.next() {
let model:scoreModel = scoreModel()
model.lessonName = String(dbResult.string(forColumn: "lessonName")!)
model.lessonCode = String(dbResult.string(forColumn: "lessonCode")!)
model.creditPoint = Double(dbResult.double(forColumn: "creditPoint"))
model.semesterName = String(dbResult.string(forColumn: "semesterName")!)
model.teacherName = String(dbResult.string(forColumn: "teacherName")!)
model.totalStudentNumber = Int(dbResult.int(forColumn: "totalStudentNumber"))
model.scoreValue = String(dbResult.string(forColumn: "scoreValue")!)
model.studentCount = Int(dbResult.int(forColumn: "studentCount"))
// 添加到可变数组
resultArray.add(model)
}
}
return resultArray
}
}
3.这是操作页面ViewController.swift,SQL语句已经经过SQLiteStudio检验,我选了“%C%”为条件。
override func viewDidLoad() {
super.viewDidLoad()
//准备sql语句
let mysql = "SELECT Lesson.lessonName,Lesson.lessonCode, Lesson.creditPoint, Course.totalStudentNumber, Teacher.name AS teacherName, Semester.name AS semesterName, Score.scoreValue, Score.studentCount FROM (Lesson INNER JOIN Course ON Lesson.id = Course.lesson_id) LEFT JOIN Score ON Course.id = Score.course_id LEFT JOIN Teacher ON Course.teacher_id = Teacher.id LEFT JOIN Semester ON Course.semester_id = Semester.id WHERE Lesson.lessonName like '%C%' ORDER BY Semester.name desc"
let resultArray = SQLiteManager.shareInstance.queryDB(sql:mysql)
print(resultArray)
}
输出结果为:
"<test.scoreModel: 0x600000135400>",
"<test.scoreModel: 0x604000135c20>",
"<test.scoreModel: 0x604000135cc0>",
"<test.scoreModel: 0x604000135d60>",
"<test.scoreModel: 0x604000135e00>",
"<test.scoreModel: 0x604000135ea0>",
"<test.scoreModel: 0x604000135f40>",
"<test.scoreModel: 0x604000135fe0>",
一脸蒙蔽……
用SQLiteStudio进行语句查询的结果都是正常的啊,类似
高等数学C(下) MATH120006.01 4 70 29 杭国明 2010~2011学年第2学期 A 4
0
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
敬往事一杯酒 普通会员 1楼
在 Swift 4 中,数组的
debug是一个选项,用于在程序运行时输出调试信息。如果你想要在数组中打印元素的值,你可以使用debugPrint方法。例如:
```swift let array = [1, 2, 3, 4, 5]
debugPrint(array)
// 输出:[1, 2, 3, 4, 5] ```
在这个例子中,
debugPrint方法将数组中的每个元素打印到控制台。因此,你可以在调试时看到数组中的元素值。注意,
debugPrint方法是线程安全的,这意味着它不会在多个线程中共享同一个数组。如果你需要在多个线程中共享同一个数组,你可能需要使用其他方法,例如使用 async/await 和.await关键字,或者使用一个闭包来实现同步。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
