当前位置: 首页 > news >正文

一些swift问题

写得比较快,如果有问题请私信。

 序列化和反序列化

反序列化的jsonString2只是给定的任意json字符串

private func p_testDecodeTable() {let arr = ["recordID123456", "recordID2"]// 序列化[string] -> json datalet jsonData = try? JSONEncoder().encode(arr)print("data:")print(String(describing: jsonData))let jsonString = String(data: jsonData!, encoding: .utf8)print("jsonString:")print(jsonString!)// 反序列化, json data -> [string]let jsonString2 = jsonStringlet jsondata2 = jsonString2!.data(using: .utf8)print("decode data:\(jsondata2!)")if let decodeArr = try? JSONDecoder().decode([String].self, from: jsondata2!) {print("decode arr:")decodeArr.forEach {print($0)}}
}

字符串插值和数据库sql语句结合 

参考下面代码,需要注意String(format:)是多参数的形式, 不需要放数组里, 有多少个参数都可以直接写入。

database.executeUpdate则是需要把参数都放withArgumentsIn的数组里。

// 某处定义了这个
static let sUpdateTable = """
update %@ set %@ = ? where id = ?;
"""// 在处理的地方可以这么写, dbQueue是FMDatabaseQueue(path:)方法创建的
dbQueue.inDatabase { database in// 组成字符串let sentence1 = sUpdateTablelet tableName1 = "address"let column1 = "detail"let str1 = String(format: sentence1, tableName1, column1)print(str1)// 组装成sql语句并且执行let value1 = "somePlace"let id1 = 30if !database.executeUpdate(str1, withArgumentsIn: [value1, id1]) {print("error: table \(tableName1) detail \(column1)")}
}

得到的数据库语句如下,问号符号在database.executeUpdate语句中会替换成value1和id1的值

字符串裁剪 

let title = "sdfjkhdsfashdfkjlhsakdsdfhdgdfg"// 方法1            
let endIndex = title.index(title.startIndex, offsetBy: 10)
let subtitle = title[..<endIndex]// 方法2
let subtitle2 = title.truncate(toLength: 20)

 字符串和数组的转化

// 为了得到["key3", "key4"]的数组
let string = "#key3#key4"
let arr = string.components(separatedBy: "#")// 为了得到"#key5#key6"的字符串
let keywordArr = ["key5", "key6"]
let str = keywordArr.joined(separator: "#")

 sql语句可以用三个引号

dbQueue.inDatabase { database inlet sql = """insert into marks (titles)values (?);"""database.executeUpdate(sql, withArgumentsIn: ["我的标题222"])
}/// 可以写多个参数, 只要与问号个数以及ArgumentIn数组的值对应起来即可let sql = """
insert into marks (titles, detail, referenceImage)
values (?, ?, ?);
"""
一些内容在swiftGG文档上说得挺清楚的

http://www.lryc.cn/news/474934.html

相关文章:

  • Nginx安装配置详解
  • 汽车免拆诊断案例 | 2010款起亚赛拉图车发动机转速表指针不动
  • 在ubuntu上安装最新版的clang
  • 使用Django REST framework构建RESTful API
  • 「Mac畅玩鸿蒙与硬件14」鸿蒙UI组件篇4 - Toggle 和 Checkbox 组件
  • Kotlin协程suspend的理解
  • 基于AI深度学习的中医针灸实训室腹针穴位智能辅助定位系统开发
  • 51单片机教程(二)- 创建项目
  • Rust 图形界面开发——使用 GTK 创建跨平台 GUI
  • Hellinger Distance(赫林格距离)
  • 【系统架构设计师】七、设计模式
  • 新工具可绕过 Google Chrome 的新 Cookie 加密系统
  • 模型拆解(三):EGNet、FMFINet、MJRBM
  • 齐次线性微分方程的解的性质与结构
  • Python-Celery-基础用法总结-安装-配置-启动
  • vue中的nextTick() - 2024最新版前端秋招面试短期突击面试题【100道】
  • 5G学习笔记三之物理层、数据链路层、RRC层协议
  • Ubuntu 通过Supervisor 或者 systemd 管理 .Net应用
  • 超好用的视频剪辑软件分享:10款剪辑软件推荐
  • 5G三大应用场景中的URLLC
  • PyMOL中常用的命令列表
  • 坏块处理 ORA-01578: ORACLE data block corrupted (file # 3, block # 152588)
  • 像`npm i`作为`npm install`的简写一样,使用`pdm i`作为`pdm install`的简写
  • DNS域名解析服务器--RHCE
  • 数据库物化视图的工作原理与Java实现
  • 炫酷的登录框!(附源码)
  • 使用Python实现智能生态系统监测与保护的深度学习模型
  • Rust 力扣 - 54. 螺旋矩阵
  • Flutter 简述(1)
  • BGP实验--BGP路由反射器