小编Hel*_*see的帖子

Swift3 sqlite3_open()打开一个现有文件

let file_url = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor:nil,create: false).appendingPathComponent("asd.db")
var db:OpaquePointer? = nil
if sqlite3_open(file_url.path, &db) == SQLITE_OK
{
    print("Successfully opened connection database!!")
    var q:OpaquePointer? = nil
    if sqlite3_prepare_v2(db, "SELECT * FROM aaa", -1, &q, nil) == SQLITE_OK
    {
        if sqlite3_step(q) == SQLITE_ROW
        {
            let res = sqlite3_column_text(q, 1)
            let name = String(cString: res!)            }
        else
        {
            print("ERROR1!!!!!")
        }
    }
    else
    {
        print("ERROR!2!!!!")
    }
}
Run Code Online (Sandbox Code Playgroud)

我在proejct中有一个名为"asd.db"的数据库文件,我正在尝试打开并从数据库中读取数据.

我不知道为什么但sqlite3_open无法找到我的数据库文件,所以它创建了一个没有我的表的新文件.

我该如何解决?

database sqlite ios swift

2
推荐指数
1
解决办法
1850
查看次数

Swift为现有用户默认值添加值

我得到了用户默认值,例如键"abc",它包含一个字符串.

存储在此密钥中的最后一个字符串是"aaa".

现在,我想为此密钥存储一个额外的值,但我不想删除最后一个值"aaa",因为我需要它.

我希望在第二个retreive中包含一个包含数组的字符串:["aaa","some_other_value","some_other_value2"...].

到目前为止,这是我的代码,用于存储用户默认值中的信息:

self.user_defaults.set(self.myTextField.text, forKey:"asd")
Run Code Online (Sandbox Code Playgroud)

这是获取数据的代码:

if let arr = user_defaults.string(forKey:"asd"){
    print (arr)
}
Run Code Online (Sandbox Code Playgroud)

nsuserdefaults ios swiftyuserdefaults swift3

2
推荐指数
1
解决办法
1692
查看次数

Swift Sqlite3_column_text()

if sqlite3_prepare_v2(db, "select a from aaa", -1, &q,nil) == SQLITE_OK {
    while sqlite3_step(q) == SQLITE_ROW {
        let res = sqlite3_column_text(q, 1)
        print(res)
    }
} else {
    print("NOT WORKING")
    NSLog("%s", sqlite3_errmsg(db))
}
Run Code Online (Sandbox Code Playgroud)

在我的表aaa中,我有一个名为“ a”的字段,其值是1,2,3,如下所示:

在此处输入图片说明

我试图将这些值放入数组中或只是打印它们,但是当我打印时(print(res)),这些值只是“ nil”。

我如何获得真实价值?

编辑:值(1,2,3)是字符串而不是标记,这就是为什么我选择sqlite3_column_text()而不是sqlite3_column_int()

database sqlite ios swift

1
推荐指数
1
解决办法
2541
查看次数