Tôi đã sử dụng SQLite.swift gần đây để xây dựng cơ sở dữ liệu ứng dụng của mình. Và tôi đang xác định tất cả các cột INTEGER
của mình với loại Int64
, như tài liệu giải thích.Tôi có thể truyền Int64 trực tiếp vào Int không?
Nhưng thỉnh thoảng tôi cần rằng Int64
chỉ là Int
. Vì vậy, câu hỏi của tôi là, nếu tôi làm điều này:
//Create a table with Int instead of Int64
let test_id = Expression<Int>("test_id")
let tests = db["tests"]
db.create(table: tests, ifNotExists: true){ t in
t.column(test_id)
}
class func insertTest(t: Int) -> Int{
//insert.rowid returns an Int64 type
let insert = tests.insert(test_id <- t)
if let rowid = insert.rowid{
//directly cast Int64 into Int
return Int(rowid)
}
return 0
}
Nó có chính xác không?
Tất nhiên tôi đã thử nghiệm nó. Và nó hoạt động, nhưng tôi đã đọc this question in Stackoverflow
Và dường như tôi có thể có một vấn đề với các thiết bị 32 bit ...
Nếu điều này là sai, làm thế nào tôi có thể đúc Int64
vào Int
?
Nếu giá trị của Int64 là lớn hơn 2^31 và Int là 32-bit gì làm bạn nghĩ sẽ xảy ra? – zaph
@zaph tràn? Tôi không biết ... –
@zaph bạn có thể giải thích cho tôi không? –