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

一些swift问题

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

 序列化和反序列化

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

private func p_testDecodeTable() {
    let arr = ["recordID123456", "recordID2"]

    // 序列化[string] -> json data
    let 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 = jsonString
    let 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 = sUpdateTable
    let tableName1 = "address"
    let column1 = "detail"
    let str1 = String(format: sentence1, tableName1, column1)
    print(str1)
            
    // 组装成sql语句并且执行
    let value1 = "somePlace"
    let id1 = 30
    if !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 in
    let sql = """
    insert into marks (titles)
    values (?);
    """

    database.executeUpdate(sql, withArgumentsIn: ["我的标题222"])
}


/// 可以写多个参数, 只要与问号个数以及ArgumentIn数组的值对应起来即可

let sql = """
insert into marks (titles, detail, referenceImage)
values (?, ?, ?);
"""
一些内容在swiftGG文档上说得挺清楚的


http://www.kler.cn/a/378762.html

相关文章:

  • LeetCode46. 全排列(2024秋季每日一题 57)
  • HTTP 405 Method Not Allowed:解析与解决
  • JVM 复习1
  • Linux 之 信号概念、进程、进程间通信、线程、线程同步
  • utf-8、pbkdf2_sha
  • 支持 Mermaid 语言预览,用通义灵码画流程图
  • (新)docker desktop镜像迁移
  • 数据结构 —— 红黑树
  • doris监控
  • Conmi的正确答案——在Kibana中进入Elasticsearch的索引管理页面
  • hadoop_mapred-site.xml
  • DRF(Django-Rest-Framework快速实现 RESTful API 接口编程)+Vue.JS前后端分离项目
  • roberta融合模型创新中文新闻文本标题分类
  • π0——用于通用机器人控制的流匹配VLA模型:一套框架控制7种机械臂,实现丝滑迁移与平替
  • 13.字符串
  • 记本地第一次运行seatunnel示例项目
  • springboot十分钟快速搭建
  • 法律文件智能识别:免费OCR平台优化数字化管理
  • 设计模式08-行为型模式1(命令模式/迭代器模式/观察者模式/Java)
  • 深度学习与时间序列预测的关系
  • 微服务核心——网关路由
  • 详解Rust标准库:VecDeque 队列
  • 浩克下载 v1.8.1 最强磁力下载器
  • [ shell 脚本实战篇 ] 编写恶意程序实现需求(恶意程序A监测特定目录B出现特定文件C执行恶意操作D-windows)
  • 「 分布式技术 」 说说唯一ID与CAS|得物技术
  • rust 压缩解压库flate2保姆级教程