2016-10-23 1 views
0

からNSMutableDictionary店の整数は実際に、私はNSMutableDictionary何であるか見当がつかないが、私が迅速2.3とXcodeの8を使用して、私はところでそれSwift2.3:sqliteの

を必要とするようです。

sqliteからこのarryに整数を追加していますが、エラーです。 もう1つはすべて文字列なので、ここで問題はありません。

その後、エラーがここにある

http://imgur.com/a/Gbrp0

let recipeIsFavor = sqlite3_column_int(statement, 3) 
let recipe_isFavor = Int.fromCString(UnsafePointer<CInt>(recipeIsFavor)) //<--------I wnat to use int here, but I have no idea. 

私はこのコードを編集するにはどうすればよいですか?私はこのエラーが消えることを願っています。

func loadData() { 

    let db_path = NSBundle.mainBundle().pathForResource("Recipes", ofType: "db") 
    var db = COpaquePointer() 
    let status = sqlite3_open(db_path!,&db) 
    if (status == SQLITE_OK) { 
     print("Open the sqlite success!\n") 
    }else { 
     print("Open the sqlite failed!\n") 
    } 

    let query_stmt = "SELECT * FROM recipe" 
    if(sqlite3_prepare_v2(db , query_stmt, -1, &statement, nil) == SQLITE_OK) { 
     self.data.removeAllObjects() 
     while (sqlite3_step(statement) == SQLITE_ROW) { 
      let recipeArray = NSMutableDictionary() 

      let recipeName = sqlite3_column_text(statement, 0) 
      let recipe_name = String.fromCString(UnsafePointer<CChar>(recipeName)) 

      let recipeType = sqlite3_column_text(statement, 1) 
      let recipe_type....... 

      let recipeImage = sqlite3_column_text(statement, 2) 
      let recipe_image....... 

      let recipeIsFavor = sqlite3_column_int(statement, 3) 
      let recipe_isFavor = Int.fromCString(UnsafePointer<CInt>(recipeIsFavor)) //<--------I wnat to use int here, but I have no idea. 

      let recipeUserPhoto = sqlite3_column_text(statement, 4) 
      let recipe_userPhoto.... 

      let recipeUserName = sqlite3_column_text(statement, 5) 
      let recipe_userName....... 

      recipeArray.setObject(recipe_name!, forKey: "recipeName") 
      recipeArray.setObject(recipe_type!, forKey: "recipeType") 
      recipeArray.setObject(recipe_image!, forKey: "recipeImage") 
      recipeArray.setObject(recipe_isFavor!, forKey: "recipIsFavor") 
      recipeArray.setObject(recipe_userPhoto!, forKey: "recipUserPhoto") 
      recipeArray.setObject(recipe_userName!, forKey: "recipUserName") 

      data.addObject(recipeArray) 
     } 

     sqlite3_finalize(statement) 
    }else { 
     print("read the sqlite data failed") 
    } 

} 

答えて

0

sqlite3_column_int()スイフトでInt32である "C整数" を返します。 Intにそれを変換する 、それはその後、ちょうど

あなたが もタイプ [String: AnyObject](またはスウィフト3で [String: Any])のスウィフト辞書の配列を使用することができます
let recipeIsFavor = sqlite3_column_int(statement, 3) 
let recipe_isFavor = Int(recipeIsFavor) 

代わりのNSMutableDictionaryNSMutableArray、 を使用

var data: [[String: AnyObject]] = [] 

let query_stmt = "SELECT * FROM recipe" 
if sqlite3_prepare_v2(db , query_stmt, -1, &statement, nil) == SQLITE_OK { 
    data = [] 
    while (sqlite3_step(statement) == SQLITE_ROW) { 
     var dict: [String: AnyObject] = [:] 

     let recipeName = sqlite3_column_text(statement, 0) 
     let recipe_name = String.fromCString(UnsafePointer<CChar>(recipeName)) ?? "" 

     let recipeIsFavor = sqlite3_column_int(statement, 3) 
     let recipe_isFavor = Int(recipeIsFavor) 

     // ... 

     dict["recipeName"] = recipe_name 
     dict["recipIsFavor"] = recipe_isFavor 
     // ... 

     data.append(dict) 
    } 
    sqlite3_finalize(statement) 
} else { 
    print("read the sqlite data failed") 
} 
+0

これはうまくいきました!Thans ver much! – HarryHuang