SQLite et Swift

yoannyoann Membre

Salut


 


Toujours dans mon projet test (voir question sur CorePlot) j'essaye d'utiliser un wrapper SQLite pour Swift pour stocker mes relevé (un insert toutes les 0.1s, CoreData n'est pas adapté pour ça), et j'ai un problème à  priori lié à  Swift 1.2.


 


J'utilise le projet https://github.com/stephencelis/SQLite.swift


 


Le bout de code intéressant est ici :



let manager: CMMotionManager = CMMotionManager()
let sqliteDB = Database("\(NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true).first!)/db.sqlite3")

let SQLTime = Expression<Int64>("time")
let SQLRoll = Expression<Double>("roll")
let SQLPitch = Expression<Double>("pitch")
let SQLYaw = Expression<Double>("yaw")

let SQLGravityX = Expression<Double>("gravityX")
let SQLGravityY = Expression<Double>("gravityY")
let SQLGravityZ = Expression<Double>("gravityZ")

let SQLAccelerationX = Expression<Double>("accelerationX")
let SQLAccelerationY = Expression<Double>("accelerationY")
let SQLAccelerationZ = Expression<Double>("accelerationZ")


override func viewDidLoad() {
super.viewDidLoad()

let sensors = sqliteDB["sensors"]

sqliteDB.create(table: sensors, ifNotExists: true) { t in
t.column(SQLTime, primaryKey: true)
t.column(SQLRoll)
t.column(SQLPitch)
t.column(SQLYaw)

t.column(SQLGravityX)
t.column(SQLGravityY)
t.column(SQLGravityZ)

t.column(SQLAccelerationX)
t.column(SQLAccelerationY)
t.column(SQLAccelerationZ)
}

}

override func viewWillAppear(animated: Bool) {
if manager.deviceMotionAvailable {
manager.deviceMotionUpdateInterval = 0.1
manager.startDeviceMotionUpdatesToQueue(NSOperationQueue.mainQueue()) {
(data: CMDeviceMotion!, error: NSError!) -> Void in
let sensors = self.sqliteDB["sensors"]

sensors.insert(self.SQLTime <- time(0),
self.SQLRoll <- data.attitude.roll,
self.SQLYaw <- data.attitude.yaw,
self.SQLGravityX <- data.gravity.x,
self.SQLGravityY <- data.gravity.y,
self.SQLGravityZ <- data.gravity.z,
self.SQLAccelerationX <- data.userAcceleration.x,
self.SQLAccelerationY <- data.userAcceleration.y,
self.SQLAccelerationZ <- data.userAcceleration.z)!
}
}

}

Mon problème est à  la dernière ligne, sur le sensors.insert.


 


Si je met le ! ou ? à  la fin comme recommandé ici : https://github.com/stephencelis/SQLite.swift/issues/34et là  http://stackoverflow.com/questions/29890073/cannot-invoke-insert-with-an-argument-list-of-type


J'ai l'erreur suivante :



ViewController.swift:101:70: Could not find an overload for 'insert' that accepts the supplied arguments

Si je ne met rien j'ai :



ViewController.swift:93:25: Cannot invoke 'insert' with an argument list of type '(Setter, Setter, Setter, Setter, Setter, Setter, Setter, Setter, Setter)'

Si quelqu'un a une idée je suis preneur...


Réponses

Connectez-vous ou Inscrivez-vous pour répondre.