Swift 4 数组debug打印print的结果是数字?

新手上路,请多包涵

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

阅读 3.3k
1 个回答

你需要重写 descriptiondebugDescription

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进