swift2使用sqlite数据库及常见错误总结(模拟机下)

swift2使用sqlite数据库及常见错误总结(模拟机下),第1张

概述0、效果图: 1、语言:swift2 2、工具:Xcode7.2 3、系统版本:      MAC OS X 10.10.5 3、准备的材料:       A、swift使用sqlite的代码封装文件,(这是我在github上找到的开源代码)我准备好了,传送门:这里。       B、sqlite图形化管理工具:SQLiteManager, 我也准备好了。传送门:来吧,点我。 4、用SQLiteM

0、效果图:


1、语言:swift2

2、工具:Xcode7.2

3、系统版本:

MAC OS X 10.10.5

3、准备的材料:

A、swift使用sqlite的代码封装文件,(这是我在github上找到的开源代码)我准备好了,传送门:这里。

B、sqlite图形化管理工具:sqliteManager, 我也准备好了。传送门:来吧,点我。

4、用sqliteManager新建sqlite数据库文件:

A、打开可视化管理工具,按照下面的步骤创建数据库文件,当然,也可以用代码来创建表。这里,就不做介绍了。

B、该可视化管理工具还提供了查询的SQL语句。

C、关于该数据库文件存储路径,可以暂时存放在桌面或者你熟悉的地方。(这里没做好, 理论上应该把该数据库文件放到 .bandle文件中,统一管理的。)







5、创建swift工程

A、创建一个singleVIEw的swift的工程。

B、拷贝数据库文件到创建的工程文件夹下。

C、把上面的swift *** 作sqlite的文件拷贝到已经创好的swift工程中。比如下面这样:


6、创建桥接文件


Build Settings -> Swift ComplIEr -Code Generation


接着刚刚创建的 .h文件,打开它,输入下面的内容即可。

#import "sqlite3.h"#import <time.h>

7、添加数据库驱动

Build Phases ->link Binary With librarIEs

8、设计界面

storyboard设计的效果如下:

通过辅助编辑器,把控件关联起来:


9、写代码了。

我实现的效果很简单,当程序启动的时候,读取数据库的内容,并显示出来。代码如下:

import UIKitclass VIEwController: UIVIEwController {        var db:sqliteDB!;    @IBOutlet weak var txtname: UITextFIEld!    @IBOutlet weak var txtVersion: UITextFIEld!    overrIDe func vIEwDIDLoad() {        super.vIEwDIDLoad()                        db = sqliteDB.sharedInstance();        initInfo();                //db.execute("create table if not exists MacInfo(name VARCHAR,version VARCHAR");    }        /// 加载数据    func initInfo()    {        let data = db.query("SELECT rowID,* FROM \"MacInfo\"");                if (0 > data.count)        {            /// 提示框            let alert = UIAlertController(Title: "tips",message: "don't find",preferredStyle: UIAlertControllerStyle.Alert);            let action = UIAlertAction(Title:"sure",style: UIAlertActionStyle.Default,handler: nil);            alert                .addAction(action);            presentVIEwController(alert,animated: true,completion: nil);            return;        }        /// 显示数据        print(data.count-1);        let user = data[data.count - 1];        txtname.text = user["name"] as? String;        txtVersion.text = user["version"] as? String;            }        /// 保存到数据库    func saveInfo()    {        let name = txtname.text!;        let version = txtVersion.text!;                let result = db.execute("insert into MacInfo(name,version) values'\(name)','\(version)') ");        print(result);            }        /// 保存按钮按下    @IBAction func saveBtntouched(sender: UIbutton) {        saveInfo();            }    overrIDe func dIDReceiveMemoryWarning() {        super.dIDReceiveMemoryWarning()        // dispose of any resources that can be recreated.    }}
10、编译

先别着急,还需要修改一个地方:

sqliteDB.swift 文件

接着,编译试试吧。会发现有个警告(没有修正该警告):

可以自己用UIAlertController代替UIAlertVIEw在这里的用法。(这里,我不做修改,向下兼容)。关于UIAlertController的简单使用,比如下面这样:

/// 提示框              let alertController = UIAlertController(Title: "提示",message: "音乐没有开始播放",preferredStyle: UIAlertControllerStyle.Alert);              let action = UIAlertAction(Title: "OK",style: .Default,handler: nil);              alertController.addAction(action);              self.presentVIEwController(alertController,animated:true,completion:nil);

是不是没在程序启动的时候看到之前展示的效果图? 先看看这里输出的是什么:


报错信息如下:

sqliteDB - Failed to copy writable version of DB!Error - The file “test.sqlite” Couldn’t be opened because there is no such file.

11、做好数据库文件的配置:

前面,创建好了数据库文件,还没派上用场呢。

解决上面出错的方法:

A、 打开Finder, 按快捷键:shift + command + G,将上面模拟器提示的路径copy上来,点击 “前往”,我的路径是:

/Users/用户名/library/Developer/CoreSimulator/Devices/3CA1FFF2-F868-4D3C-AA01-E4BEEEFBAC36/data/Containers/Data/Application/75DB3D7A-E63D-4655-AB2E-C91EEEC869B0/documents/
B、将创建好的数据库文件拷贝到该目录下,即可。

12 、重新编译,就达到了:程序启动,读取数据库指定表中得数据了。

总结

以上是内存溢出为你收集整理的swift2使用sqlite数据库及常见错误总结(模拟机下)全部内容,希望文章能够帮你解决swift2使用sqlite数据库及常见错误总结(模拟机下)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1078348.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存