繁体   English   中英

如何使用swift3将数据库存储到struct中?

[英]How to store database into struct using swift3?

我有一个获取数据库并在MutableArray中返回它的函数,现在我需要数据库位于结构中。

我需要将MutableArray放入结构中还是应该将数据直接放入结构中?

我不知道如何解决这个问题或如何将数据库存储到struct中

我的代码:

class CrimesInfo: NSObject {

var name: String = String()
var detail: String = String()
var time: String = String()
}

功能:

func getAllCrimesData() -> NSMutableArray {
    sharedInstance.database!.open()
    let resultSet: FMResultSet! = sharedInstance.database!.executeQuery("SELECT * FROM CrimeTable", withArgumentsIn: nil)
    let marrCrimesInfo : NSMutableArray = NSMutableArray()
    if (resultSet != nil) {
        while resultSet.next() {
            let crimesInfo : CrimesInfo = CrimesInfo()
            crimesInfo.name = resultSet.string(forColumn: "Name")
            crimesInfo.detail = resultSet.string(forColumn: "Detail")
            crimesInfo.time = resultSet.string(forColumn: "Time")
            marrCrimesInfo.add(crimesInfo)
        }
    }

这里有很多事情。 这是我的一些想法:

  1. 您的getAllCrimesData实际上获取crimesInfo “数据”或“放入,选择一个,保持一致”。
  2. 您的getAllCrimesData返回混合在一起的各种数据的数组。 无需这样做,立即填充一些结构,而不必担心稍后将数组解析为结构。
  3. 几乎没有理由在Swift中使用NSArrayNSDictionary或它们的可变版本。 使用本机Swift类型。
  4. 使用安全guard letif let检查来处理resultSet的可选性,而不是使用隐式展开的可选。
  5. 没有理由将CrimesInfo
  6. 没有理由使CrimesInfoNSObject继承
  7. 没有理由使用空字符串预过滤name / detail / time 我怀疑您是否想要定罪""

这是我的写法:

struct CrimeInfo: NSObject {
    let name: String
    let details: String
    let time: String

    init(name: String, detail: String, time: String) {
        self.name = name
        self.details = details
        self.time = time
    }

    init(fromResultSet: FMResultSet) {
        self.init(
            name: resultSet.string(forColumn: "Name"),
            details: resultSet.string(forColumn: "Detail"),
            time: resultSet.string(forColumn: "Time")
        )
    }
}

let CrimesIntoQuery = "SELECT * FROM CrimeTable"

func getAllCrimesInfo() -> [CrimeInfo] {
    let database = sharedInstance.database!
    database.open()

    guard let resultSet = database.executeQuery(CrimesIntoQuery, withArgumentsIn: nil) {
        else return []
    }

    var crimes = [CrimeInfo]()

    while resultSet.next() {
        crimes.add(CrimeInfo(fromResultSet: resultSet))
    }

    return crimes
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM