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

问题描述:

我有一个函数来获取数据库并在MutableArray中返回它,现在我需要数据库在一个结构中。如何使用swift3将数据库存储到结构中?

我是否需要将MutableArray获取到结构中,还是应该直接将数据获取到结构中?

我不知道如何处理这个或如何将数据库存储到结构

我的代码:

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. 有几乎从来没有一个理由使用NSArrayNSDictionary,或者它们的可变版本雨燕。使用本机雨燕。
  4. 使用安全guard letif let检查应对resultSet的可选性,而不是使用隐性解包可选
  5. 没有理由制作CrimesInfo一类
  6. 没有理由使从NSObject
  7. CrimesInfo继承我们没有理由为一个空字符串预FIL的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 
}