2016-11-02 4 views
3

私はSQLiteアクセスのためにSwiftDataを使用しています。SwiftData(SQLiteラッパー)Swift 3.0で壊れました

https://github.com/mozilla-mobile/firefox-ios/blob/master/Storage/ThirdParty/SwiftData.swift

SwiftDataはスイフトで符号化されたSQLiteのラッパーです。 Swift 3.0とXCode 8の後に次の行が壊れています。私はスウィフトとnoobieの一種ですので、私は壊れているものを固定してあなたの助けをいただければ幸いです。

let text = UnsafePointer<Int8>(sqlite3_column_text(statement, index)) 

結果:「『初期化』は使用できません: 『withMemoryRebound(:容量:へ_)』を使用して、一時的にメモリを別のレイアウトと互換性のあるタイプとして表示します。

return Data(bytes: UnsafePointer<UInt8>(blob), count: Int(size)) 

結果は: "タイプの引数リストに型 'UnsafePointer' の初期化子を呼び出すことはできません '(UnsafeRawPointer?)'" に

return sqlite3_column_int(statement, index) != 0 

結果を: '!='」「ブールの生成します」ではないと予想文脈結果タイプ 'ANYOBJECT "'

let text = UnsafePointer<Int8>(sqlite3_column_text(statement, index)) 

結果:" '?INIT' が使用できない:利用 'withMemoryRebound(TO:容量:_)' 一時的に別のレイアウトと互換性のあるようにメモリを表示しますタイプ。"

for i: Int32 in 0 ..< columnCount += 1 { 

結果:「演算子を変異の左側は変更できません: 『.. <』不変の値を返す」

すべてのヘルプおくります!

+1

は 'sqlite3_column_text'問題のhttp://stackoverflow.com/a/25169265/1187415を参照してください参照してください。 –

+1

最後の問題は、http://stackoverflow.com/questions/39940937/error-in-for-loop-cgfloatの複製です(なぜループに '+ = 1'があるのでしょうか?) –

+0

* "'!= ''予想される文脈の結果型ではない 'Bool'を生成する 'AnyObject?' "*より多くのコンテキストを知る必要がある問題:関数は何を返すのですか? –

答えて

1

sqlite3_column_int(statement, index)Int32

sqlite3_column_int(statement, index) != 0 

がブール値であるので、 (オプション)AnyObjectが予想される場合には、戻り値として意味をなさない返します。あなたは に代わりNSNumberを整数をラップすることができます:

func getColumnValue(_ statement: OpaquePointer, index: Int32, type: String) -> AnyObject? { 
    let val = sqlite3_column_int(statement, index) 
    return NSNumber(value: val) 
} 

スウィフト3、に何AnyObjectに変換することができますので、別のオプションは、

func getColumnValue(_ statement: OpaquePointer, index: Int32, type: String) -> AnyObject? { 
    return sqlite3_column_int(statement, index) as AnyObject 
} 

だろう。 違いは、2番目の解決策では、 は元の番号タイプInt32に変換されますが、 Intまたは他の整数型には変換できないことです。

他の問題については、

関連する問題