私はsqliteファイルを使用してauthorIdからdiaryEntriesTeacherを取得しています。変数authorIdis nilを出力すると、authorIdの次のオブジェクトが生成されます。コード:-
func applySelectQuery() {
checkDataBaseFile()
objFMDB = FMDatabase(path: fullPathOfDB)
objFMDB.open()
objFMDB.beginTransaction()
do {
let results = try objFMDB.executeQuery("select * from diaryEntriesTeacher", values: nil)
while results.next() {
let totalCount = results.resultDictionary
let authorId = totalCount?["authorId"]!
print("authorId",authorId)
}
}
catch {
print(error.localizedDescription)
}
print(fullPathOfDB)
self.objFMDB.commit()
self.objFMDB.close()
}
これは、[AnyHashable : Any]
の辞書にアクセスする方法です。
var dict : Dictionary = Dictionary<AnyHashable,Any>()
dict["name"] = "sandeep"
let myName : String = dict["name"] as? String ?? ""
あなたの場合
let authorId = totalCount?["authorId"] as? String ?? ""
アクセスしようとしているプロパティを使用する前に、AnyHashableに変換する必要があります。
あなたの場合:
do {
let results = try objFMDB.executeQuery("select * from diaryEntriesTeacher", values: nil)
while results.next() {
let totalCount = results.resultDictionary
let authorId = totalCount?[AnyHashable("authorId")]!
print("authorId",authorId)
}
これはスウィフトです。強力なタイプと高速な列挙を使用します。 Dictionary<AnyHashable,Any>
は辞書の汎用タイプであり、すべてのキーがString
のように見えるため、<String,Any>
にキャストできます。
do
if let results = try objFMDB.executeQuery("select * from diaryEntriesTeacher", values: nil) as? [[String:Any]]
for item in results {
let authorId = item["authorId"] as? String
let studentName = item["studentName"] as? String
print("authorId", authorId ?? "n/a")
print("studentName", studentName ?? "n/a")
}
}
....