当前位置: 首页 > 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文档上说得挺清楚的

相关文章:

一些swift问题

写得比较快&#xff0c;如果有问题请私信。 序列化和反序列化 反序列化的jsonString2只是给定的任意json字符串 private func p_testDecodeTable() {let arr ["recordID123456", "recordID2"]// 序列化[string] -> json datalet jsonData try? JSO…...

Nginx安装配置详解

Nginx Nginx官网 Tengine翻译的Nginx中文文档 轻量级的Web服务器&#xff0c;主要有反向代理、负载均衡的功能。 能够支撑5万的并发量&#xff0c;运行时内存和CPU占用低&#xff0c;配置简单&#xff0c;运行稳定。 写在前 uWSGI与Nginx的关系 1. 安装 Windows 官网 Stabl…...

汽车免拆诊断案例 | 2010款起亚赛拉图车发动机转速表指针不动

故障现象  一辆2010款起亚赛拉图车&#xff0c;搭载G4ED 发动机&#xff0c;累计行驶里程约为17.2万km。车主反映&#xff0c;车辆行驶正常&#xff0c;但组合仪表上的发动机转速表指针始终不动。 故障诊断  接车后进行路试&#xff0c;车速表、燃油存量表及发动机冷却温度…...

在ubuntu上安装最新版的clang

方法一&#xff1a; 执行如下的命令&#xff1a; # 下载安装脚本wget https://apt.llvm.org/llvm.sh chmod x llvm.sh # 开始下载&#xff0c; 输入需要安装的版本号。 sudo ./llvm.sh <version number>方法二 添加软件下载源。 请根据自己的Ubuntu系统版本添加&…...

使用Django REST framework构建RESTful API

使用Django REST framework构建RESTful API Django REST framework简介 安装Django REST framework 创建Django项目 创建Django应用 配置Django项目 创建模型 迁移数据库 创建序列化器 创建视图 配置URL 配置全局URL 配置认证和权限 测试API 使用Postman测试API 分页 过滤和排序…...

「Mac畅玩鸿蒙与硬件14」鸿蒙UI组件篇4 - Toggle 和 Checkbox 组件

在鸿蒙开发中,Toggle 和 Checkbox 是常用的交互组件,分别用于实现开关切换和多项选择。Toggle 提供多种类型以适应不同场景,而 Checkbox 支持自定义样式及事件回调。本篇将详细介绍这两个组件的基本用法,并通过实战展示它们的组合应用。 关键词 Toggle 组件Checkbox 组件开…...

Kotlin协程suspend的理解

suspend修饰符&#xff0c;它可以告诉编译器&#xff0c;该函数需要在协程中执行。作为开发者&#xff0c;您可以把挂起函数看作是普通函数&#xff0c;只不过它可能会在某些时刻挂起和恢复而已。协程的挂起就是退出方法&#xff0c;等到一定条件到来会重新执行这个方法&#x…...

基于AI深度学习的中医针灸实训室腹针穴位智能辅助定位系统开发

在中医针灸的传统治疗中&#xff0c;穴位取穴的精确度对于治疗效果至关重要。然而&#xff0c;传统的定位方法&#xff0c;如体表标志法、骨度折量法和指寸法&#xff0c;由于观察角度、个体差异&#xff08;如人体姿态和皮肤纹理&#xff09;以及环境因素的干扰&#xff0c;往…...

51单片机教程(二)- 创建项目

1 创建项目 创建项目存储文件夹&#xff1a;C51Project 打开Keil5软件&#xff0c;选择 Project -> New uVision Project&#xff1a; 选择项目路径&#xff0c;即刚才创建的文件夹 选择芯片&#xff0c;选择 Microchip&#xff08;微型集成电路&#xff09;&#xff0…...

Rust 图形界面开发——使用 GTK 创建跨平台 GUI

第五章 图形界面开发 第一节 使用 GTK 创建跨平台 GUI GTK&#xff08;GIMP Toolkit&#xff09;是一个流行的开源跨平台图形用户界面库&#xff0c;适用于创建桌面应用程序。结合 Rust 的 gtk-rs 库&#xff0c;开发者能够高效地构建现代化 GUI 应用。本节将详细探讨 GTK 的…...

Hellinger Distance(赫林格距离)

Hellinger Distance&#xff08;赫林格距离&#xff09;是一种用于衡量两个概率分布相似度的距离度量。它通常用于概率统计、信息论和机器学习中&#xff0c;以评估两个分布之间的相似性。Hellinger距离的值介于0和1之间&#xff0c;其中0表示两个分布完全相同&#xff0c;1表示…...

【系统架构设计师】七、设计模式

7.1 设计模式概述 设计经验在实践者之间日益广泛地利用&#xff0c;描述这些共同问题和解决这些问题的方案就形成了所谓的模式。 7.1.1 设计模式的历史 建筑师Christopher Alexander首先提出了模式概念&#xff0c;他将模式分为了三个部分&#xff1a; 特定的情景&#xff…...

新工具可绕过 Google Chrome 的新 Cookie 加密系统

一位研究人员发布了一款工具&#xff0c;用于绕过 Google 新推出的 App-Bound 加密 cookie 盗窃防御措施并从 Chrome 网络浏览器中提取已保存的凭据。 这款工具名为“Chrome-App-Bound-Encryption-Decryption”&#xff0c;由网络安全研究员亚历山大哈格纳 (Alexander Hagenah…...

模型拆解(三):EGNet、FMFINet、MJRBM

文章目录 一、EGNet1.1编码器&#xff1a;VGG16的扩展网络 二、EMFINet2.1编码器&#xff1a;三分支并行卷积编码器2.2CFFM&#xff1a;级联特征融合模块2.3Edge Module&#xff1a;突出边缘提取模块2.4Bridge Module&#xff1a;桥接器2.5解码器&#xff1a;深度特征融合解码器…...

齐次线性微分方程的解的性质与结构

内容来源 常微分方程(第四版) (王高雄,周之铭,朱思铭,王寿松) 高等教育出版社 齐次线性微分方程定义 d n x d t n a 1 ( t ) d n − 1 x d t n − 1 ⋯ a n − 1 ( t ) d x d t a n ( t ) x 0 \frac{\mathrm{d}^nx}{\mathrm{d}t^n} a_1(t)\frac{\mathrm{d}^{n-1}x}{\math…...

Python-Celery-基础用法总结-安装-配置-启动

文章目录 1.安装 Celery2.配置 Celery3.启动 Worker4.调用任务5.任务装饰器选项6.任务状态7.定期任务8.高级特性9.监控和管理 Celery 是一个基于分布式消息传递的异步任务队列。它专注于实时操作&#xff0c;但也支持调度。Celery 可以与 Django, Flask, Pyramid 等 Web 框架集…...

vue中的nextTick() - 2024最新版前端秋招面试短期突击面试题【100道】

nextTick() - 2024最新版前端秋招面试短期突击面试题【100道】 &#x1f504; 在Vue.js中&#xff0c;nextTick 是一个重要的方法&#xff0c;用于在下次DOM更新循环结束之后执行回调函数。理解 nextTick 的原理和用法可以帮助你更好地处理DOM更新和异步操作。以下是关于 next…...

5G学习笔记三之物理层、数据链路层、RRC层协议

5G学习笔记三之物理层、数据链路层、RRC层协议 物理层位于无线接口协议栈的最底层&#xff0c;作用&#xff1a;提供了物理介质中比特流传输所需要的所有功能。 1.3.1 传输信道的类型 物理层为MAC层和更高层提供信息传输的服务&#xff0c;其中&#xff0c;物理层提供的服务…...

Ubuntu 通过Supervisor 或者 systemd 管理 .Net应用

在 Ubuntu 上安装 .NET 8.0&#xff0c;通过 supervisor 或 systemd 管理 .NET 应用服务&#xff0c;确保应用能够自动启动、运行以及在崩溃时重启。 1. 安装 .NET 8.0 最新的Ubuntu版本已经不需要注册 Microsoft 包存储库了&#xff0c;具体的可以参考微软官方文档安装&…...

超好用的视频剪辑软件分享:10款剪辑软件推荐

视频剪辑软件哪个比较好用&#xff1f;无论是短视频创作者、专业剪辑师&#xff0c;还是影视后期制作团队&#xff0c;选择一款合适的视频剪辑软件至关重要。今天&#xff0c;我将为大家分享几款超好用的视频剪辑软件&#xff0c;并介绍视频剪辑的六大核心流程。 1.影忆 特点&a…...

Komiko 视频到视频功能炸裂上线!

Komiko 平台作为行业的创新先锋&#xff0c;近日宣布推出全新的视频到视频&#xff08;Video-to-Video&#xff09;功能&#xff0c;这一举措犹如一颗重磅炸弹&#xff0c;瞬间在漫画、动画和插画创作的世界里掀起了惊涛骇浪&#xff0c;进一步巩固了其作为 AI 驱动的一体化创作…...

centos7.9源码安装zabbix7.12,求赞

centos7.9源码安装zabbix7.12-全网独有 3.CentOS7_Zabbix7.0LTS3.1.安装环境3.2.换成阿里源3.3.安装相关依赖包3.3.1.直接安装依赖3.3.2.编译安装-遇到问题01-net-snmp3.3.3.编译安装-遇到问题02-libevent3.3.4.编译安装-遇到问题03-安装openssl 3.4.创建用户和组3.5.下载上传源…...

1.3 古典概型和几何概型

文章目录 古典概型模型(等可能模型)几何概型 古典概型模型(等可能模型) 两个条件&#xff1a; 1) 有限个样本点 2) 等可能性 例题&#xff1a; 设有n个人&#xff0c;每个人都等可能地被分配到N个房间中的任一间(n≤N)&#xff0c; 求下列事件的概率: (1)某指定的n间房…...

华为OD机试_2025 B卷_数组去重和排序(Python,100分)(附详细解题思路)

题目描述 给定一个乱序的数组&#xff0c;删除所有的重复元素&#xff0c;使得每个元素只出现一次&#xff0c;并且按照出现的次数从高到低进行排序&#xff0c;相同出现次数按照第一次出现顺序进行先后排序。 输入描述 一个数组 输出描述 去重排序后的数组 用例 输入1,3,…...

JVM 内存溢出 详解

内存溢出 内存溢出指的是内存中某一块区域的使用量超过了允许使用的最大值&#xff0c;从而使用内存时因空间不足而失败&#xff0c;虚拟机一般会抛出指定的错误。 在Java虚拟机中&#xff0c;只有程序计数器不会出现内存溢出的情况&#xff0c;因为每个线程的程序计数器只保…...

VTK 显示文字、图片及2D/3D图

1. 基本环境设置 首先确保你已经安装了VTK库&#xff0c;并配置好了C开发环境。 #include <vtkSmartPointer.h> #include <vtkRenderWindow.h> #include <vtkRenderWindowInteractor.h> #include <vtkRenderer.h> 2. 显示文字 2D文字 #include &l…...

IDEA 中 Undo Commit,Revert Commit,Drop Commit区别

一、Undo Commit 适用情况&#xff1a;代码修改完了&#xff0c;已经Commit了&#xff0c;但是还未push&#xff0c;然后发现还有地方需要修改&#xff0c;但是又不想增加一个新的Commit记录。这时可以进行Undo Commit&#xff0c;修改后再重新Commit。如果已经进行了Push&…...

【Linux网络篇】:从HTTP到HTTPS协议---加密原理升级与安全机制的全面解析

✨感谢您阅读本篇文章&#xff0c;文章内容是个人学习笔记的整理&#xff0c;如果哪里有误的话还请您指正噢✨ ✨ 个人主页&#xff1a;余辉zmh–CSDN博客 ✨ 文章所属专栏&#xff1a;Linux篇–CSDN博客 文章目录 HTTPS协议原理一.预备知识1.什么是“加密”2.为什么要“加密”…...

【大模型LLM学习】Flash-Attention的学习记录

【大模型LLM学习】Flash-Attention的学习记录 0. 前言1. flash-attention原理简述2. 从softmax到online softmax2.1 safe-softmax2.2 3-pass safe softmax2.3 Online softmax2.4 Flash-attention2.5 Flash-attention tiling 0. 前言 Flash Attention可以节约模型训练和推理时间…...

明基编程显示器终于有优惠了,程序员快来,错过等一年!

最近618的活动已经陆续开始了&#xff0c;好多人说这是买数码产品的好时候&#xff0c;作为一名资深程序员&#xff0c;我做了不少功课&#xff0c;决定给自己升级办公设备&#xff0c;入手明基 RD 系列的显示器&#xff0c;这是市面上首家专注于我们程序员痛点和需求的产品&am…...