请选择 进入手机版 | 继续访问电脑版
楼主: 数术
1530 0

StORM:在Swift中创建数据类 [推广有奖]

学科带头人

20%

还不是VIP/贵宾

-

TA的文库  其他...

Excel学习笔记

经管职场

投资,最重要的事

威望
3
论坛币
9995970 个
通用积分
926.0439
学术水平
349 点
热心指数
435 点
信用等级
316 点
经验
38937 点
帖子
473
精华
9
在线时间
383 小时
注册时间
2015-9-10
最后登录
2020-8-30

数术 在职认证  发表于 2017-3-24 11:23:22 |显示全部楼层 |坛友微信交流群

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
使用 StORM 数据类

首先请将函数库引入程序:

  1. import PostgresStORM// 如果您用的其他数据源,比如SQLite,请这样声明:import SQLiteStORM
复制代码

当您在 StORM 基础上创建数据类的时候,会触发数据库自动构造一个表格,使得与数据库操作实现自动化。

如果您使用的是 PostgreSQL,请以 PostgresStORM 作为基类声明:

  1. class User: PostgresStORM {
  2. }
复制代码

如果您使用的是 SQLite,请以 SQLiteStORM 作为基类声明:

  1. class User: SQLiteStORM {
  2. }
复制代码

下一步,请为您的类增加属性,该操作将自动更细相关的数据表结构。在此强烈建议在编写属性部分程序的时候,请不要使用非标准字符,因为可能数据库不接受这样的字段,比如“🍒”。

⚠注意⚠ 该对象的第一个属性将成为对应数据表的主索引 —— 传统的方式就是给主索引列起名叫做 id,虽然您可以为主索引字段设置任何有效的名字。SQL这种关系数据库的主索引典型类型是整型、字符串或者UUID编码。如果您的主索引不是自动递增的整数,则一定要设置好这个id值,以保证数据的完整性和一致性。

  1. // ⚠注意⚠:第一个属性将成为主索引字段,所以应该是ID。var id              : Int = 0var firstname       : String = ""var lastname        : String = ""var email           : String = ""
复制代码


您可能已经注意到上面的程序通过给每个字段设置默认值,而不是在init()构造函数中设置。这样看起来更简单一些。如果您选择自行编写init() 或 init(_ connect: XXConnect) 构造函数,请注意一定要在构造函数中首先调用基类的构造函数super.init(),而且要小心数据库的连接属性。

确定数据表格

为了避免数据库内的命名冲突,请用下列方法自行设置每个数据类的对应数据表名称,如下所示:

override open func table() -> String {    return "users"}数据类对象与数据库的属性绑定

为了能够让新编写的数据类正常工作,比如查询数据并把结果记录集转换成为对象数组等等,请一定要在您的数据类中增加以下两个函数:

  1. override func to(_ this: StORMRow) {
  2.     id              = this.data["id"] as! Int
  3.     firstname       = this.data["firstname"] as! String
  4.     lastname        = this.data["lastname"] as! String
  5.     email           = this.data["email"] as! String}func rows() -> [User] {    var rows = [User]()    for i in 0..<self.results.rows.count {        let row = User()
  6.         row.to(self.results.rows[i])
  7.         rows.append(row)
  8.     }    return rows
  9. }
复制代码


特别注意在 to (绑定到)函数中,要逐个指定所有属性。 这种处理方法的好处是能够在这个阶段验证绑定操作是否有效,您还可以在这个过程中增加更多自定义操作。

而rows (数据行)函数则是用于处理简化结果记录集为对象数组。请注意在使用上面的代码时,⚠一定要⚠把第三行的对象类名称改过来。

完整案例

以下是整个类的完整例子:

  1. import PostgresStORMclass User: PostgresStORM {    // NOTE: 注意,第一个属性将会是数据表主索引。    var id              : Int = 0
  2.     var firstname       : String = ""
  3.     var lastname        : String = ""
  4.     var email           : String = ""


  5.     override open func table() -> String {        return "users"
  6.     }    override func to(_ this: StORMRow) {
  7.         id              = this.data["id"] as! Int
  8.         firstname       = this.data["firstname"] as! String
  9.         lastname        = this.data["lastname"] as! String
  10.         email           = this.data["email"] as! String
  11.     }    func rows() -> [User] {        var rows = [User]()        for i in 0..<self.results.rows.count {            let row = User()
  12.             row.to(self.results.rows[i])
  13.             rows.append(row)
  14.         }        return rows
  15.     }
  16. }
复制代码

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Storm SWIFT sto ORM PostgreSQL 关系数据库 数据库 storm import 数据表

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-3-29 03:19