從我的數據庫中的一個列到字典我要插入從我的數據庫到字典中的名字列在排序並添加部分,以我的tableView。 我有一個從數據庫中只存儲的名稱和返回MutableArray功能和返回字典的陣列另一個函數。 我不知道爲什麼,但我始終MutableArray爲零,心中已經設法得到的值的唯一方法是,當我嘗試排序的字典,並得到類型的返回值:字符串,[字符串]而不是[字符串:[字符串]如何使用Swift3
我的代碼:
let sharedInstance = ModelManager()
class ModelManager: NSObject {
var database: FMDatabase? = nil
class func getInstance() -> ModelManager
{
if(sharedInstance.database == nil)
{
sharedInstance.database = FMDatabase(path: Util.getPath("test3.sqlite"))
}
return sharedInstance
}
func getAllCrimesNames() -> NSMutableArray { // Part1: database into mutableArray
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 : NameInfo = NameInfo()
crimesInfo.Name = resultSet.string(forColumn: "Name")
marrCrimesInfo.add(crimesInfo)
}
}
sharedInstance.database!.close()
return marrCrimesInfo
}
}
第2部分:讓我mutableArray進入字典和排序它
class SectionData {
var marrCrimesNames : NSMutableArray!
func getCrimesNames() {
marrCrimesNames = NSMutableArray()
marrCrimesNames = ModelManager.getInstance().getAllCrimesNames()
}
func getSectionsFromData() -> [String: [String]] {
var sectionDictionary = [String: [String]]()
if marrCrimesNames != nil { // for some reason always nil!
let crime: NameInfo = marrCrimesNames.object(at: 0) as! NameInfo
_ = crime.Name
var firstLetter: [String] = []
for crime in marrCrimesNames {
firstLetter.append((crime as AnyObject).Name)
}
let characters = Array(Set(firstLetter.flatMap({ $0.characters.first })))
for character in characters.map({ String($0) }) {
sectionDictionary[character] = firstLetter.filter({ $0.hasPrefix(character) })
}
//var sortedSectionDictionary = Array(sectionDictionary.keys).sorted() // return [String, [String]] instead of [String: [String]]
}
return sectionDictionary
}
}
我知道這是一個很大但我錯過了一些簡單的東西,我真的需要幫助。 謝謝大家...
您在斯威夫特編程。你爲什麼使用NS [Mutable] Array而不是實際的Swift數組? – rmaddy
我可以改變它,仍然不能解決問題 –
如果你想知道爲什麼'marrCrimesNames'總是'nil',請使用你的調試器並跟蹤代碼的執行情況。 – rmaddy