首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

WWDC 2023,我期待 Core Data 带来的新变化

如果苹果能将其他一些 API(例如:NSExpression等)也用 Swift 实现,届时再对 Swift 语言进行有针对性的增强,基于 Swift 实现的 Core Data 将应运而生。...支持更多 SQLite 新特性 紧迫性:4 实现可能性:3.5( 总分 5 分 ) 尽管 Core Data 当前支持四种存储模式,但是绝大多数开发者仍然将 SQLite 作为首选的存储类型。...苹果也很清楚这种情况,因此在最近几年为 Core Data 开发的一些新增功能上,也仅支持 SQLite。 然而,苹果已经很久没有对 Core Data 的 SQLite 支持进行增强了。...就我个人而言,SQLite 所能实现的全文检索和原生的 JSON 查询能力都是我迫切需要的。 我希望上述功能能在最近一两年内被 Core Data 所采纳。...尤其是共享数据这一功能,因为本身 API 的一些不完善,始终没有被开发者广泛采用。

46010
您找到你想要的搜索结果了吗?
是的
没有找到

新年新语言,WCDB Swift

今天,终于可以正式发布 WCDB Swift 的第一个正式版本了。 WCDB Swift 约有 1.5w 行代码,使用 Pure Swift 编写,几乎不包含 Cocoa 的代码。...模型绑定 WCDB Swift 的模型绑定,基于 Swift 4.0 的 Codable 协议实现。通过建立 Swift 类型与数据库表之间的映射关系,使得开发者可以通过类对象直接操作数据库。...image.png 类似 Sample.Properties.identifier > 0 的语法,其返回值并不为 Bool,而是语言集成查询的 Expression 对象,WCDB 会根据这个语句,...深入 SQLite 源码的性能优化 WCDB 基于 SQLite 开发,我们在之前的文章介绍过其对 SQLite 源码进行的性能优化,以适配移动终端的场景。...因此,先有 WCDB Swift,未来才有用 Swift 编写微信的可能,这逻辑没毛病。 另一方面,没有微信的上线机制的保护和庞大的用户量的验证,我们需要确保 WCDB Swift 的稳定性。

2.3K80

SQLite 并发的四种处理方式

下面我们通过 iOS 中四个常用类库 (SQLite.swift, FMDB, GRDB, Core Data) 来看看这些设计。...SQLite.swift 方案 SQLite.swift 采用了最简单粗暴的一种方案,使用者只会得到一个数据库连接,所有的操作都是在该连接上串下执行,类库的作者并没有提供数据库连接池类似的特性。...== 1) let insert = avatars.insert(userId <- 1, url <- avatarURL) if db.scalar(userAvatars.count) == 0...FMDB 方案 FMDB 与 SQLite.swift 一样都是采用串行设计,只不过 FMDB 在此基础上做了些加强:FMDB 中使用者不会接触到数据库连接而是通过在 API 闭包中组织语句来实现数据库访问...为了解决文章前面提到的 SQLite 并发情形下的典型问题,Core Data 自己实现并维护了一套上下文管理逻辑。 SQLite.swift 关注的上下文是其执行期间的单个SQL语句。

6.8K70

这就是艺术「GitHub 热点速览 v.22.25」

减轻等待焦虑的旋转小图标 svg-spinners 或者是让你随手涂鸦、随堂笔记即成画作的 Lorien,以及麻雀虽小但是数据俱全的 SQLite.swift,以及 ping 下就能看到的 say hi...GitHub 地址→https://github.com/n3r4zzurr0/svg-spinners 1.2 白板绘图:Lorien 本周 star 增长数:1,150+ Lorien 基于 Godot...GitHub 地址→https://github.com/SwifterSwift/SwifterSwift 2.2 小巧数据库:SQLite.swift 本周 star 增长数:1,050+ SQLite...而 SQLite.swift 则是基于 SQLite3 的 Swift 层,提供了 SQL 语句和解析上的“编译信心”。...GitHub 地址→https://github.com/stephencelis/SQLite.swift 2.3 笔记软件:siyuan 本周 star 增长数 150+ 思源笔记是一款本地优先的个人知识管理系统

45020

新年新语言,WCDB Swift

WCDB ObjC 版本的实现中,由于引入了 C++ 代码,并不能直接 bridge 到 Swift。因此,我们从 9 月份开始就着手使用原生的 Swift,重写 WCDB。...今天,终于可以正式发布 WCDB Swift 的第一个正式版本了。 WCDB Swift 约有 1.5w 行代码,使用 Pure Swift 编写,几乎不包含 Cocoa 的代码。...模型绑定 WCDB Swift 的模型绑定,基于 Swift 4.0 的协议实现。通过建立 Swift 类型与数据库表之间的映射关系,使得开发者可以通过类对象直接操作数据库。...类似的语法,其返回值并不为,而是语言集成查询的对象,WCDB 会根据这个语句,去进行 SQL 的查询。同时,通过类型的定义,Swift 即可推导出 WCDB 查询的结果为类。...深入 SQLite 源码的性能优化 WCDB 基于 SQLite 开发,我们在之前的文章介绍过其对 SQLite 源码进行的性能优化,以适配移动终端的场景。

98090

【重识云原生】第三章云存储3.4节——OpenStack Swift 对象存储方案

Quorum协议示例 但其实根据源码分析来看,Quorum仲裁机制必须要等到3个Response都返回之后才会选举出最佳的Response返回给客户端(即使是Timeout,也会等待Storage...Server返回),所以一个集群一旦遇到有一个慢节点,将非常影响Swift的性能,导致写入速度上不去(这是一个可以改进的地方!)...数据保存在 SQLite 数据库中。在新版中,Swift 支持在容器内添加文件夹。 Object: 对象,包括数据和数据的元数据,以文件形式保存在文件系统上。...Swift 数据模型 三类数据模型的特性如下: Containers 是用户创建的,用来 hold objects。 objects 可以是 0 bytes 长度,或者包含数据。...如果一个 container 所有 objects 的大小为0,那么它将看起来象一个目录。 客户端使用 HTTP 或者 HTTPS 访问 Swift,包括读、写、删除 objects。

2.4K30

Vapor奇幻之旅(03上手)

Vapor采用模块化来组建web应用,利用Swift Package Manager来管理不同的组建,在Package.swift里可以添加需要的package来引入新的模块,一旦package被引入,...当我们运行 vapor new HelloWorld vapor xcode 会生成一个新的Vapor程序 我们用xcode打开来看看这个程序有哪些东西: 1、Package.swift ?...,返回需要的结果。 JSON 提供服务端的JSON支持,包括生成、处理和解析json串。...Package: FluentProvider 这是一个管理数据库连接的库,相当于java的hybernate和mybatis,默认数据库是sqlite,现在可以支持Memory级别的数据库和MySQL...,引入这个package则会默认依赖上一个SQLite的模块,如果想要支持更多的库则添加相应的provider就可以,下面是现有的provider: mysql-provider fluent-provider

86810

SwiftUI + Core Data App 的内存占用优化之旅

这意味着,在惰性容器中,视图一经创建,其存续期将与该容器一致( 容器不销毁,则视图将始终存续 )。...对 Cell 视图代码( ItemCell.swift )进行如下调整: struct ItemCell: View { @ObservedObject var item: Item @...不过通过实验中分析,这些数据肯定是被缓存的,且在被加载后,并不会因为返回惰值而自动从内存中清除 因此,即使我们将托管对象返回成惰值状态,也仅能节省极少的内存占用( 在本例中几乎可以忽略不计 )。...终极优化:私有上下文 + 不持有托管对象 思路 在第二轮优化中,尽管通过将托管对象转换为惰值解决了一部分内存占用问题,但存在于行缓存中的数据始终还是无法得到有效清除。...} } SwiftUI 只会持有 @StateObject 所对应实例的引用,实例中属性数据的释放仍遵循标准的 Swift 语言逻辑。

1.2K10

iOS开发如何避免安全隐患

1.2.2 接口内容进行加密 很多的app接口只对请求的参数进行加密和各种验证,而接口返回过来的数据就是明文。...如果不用SSL Pinning来防止中间人攻击,也可以把接口返回的数据也进行加密,这样抓包工具抓到包后也依然不能破解。 比如微信,微信中的接口用的是http协议,但是内容全部进行了加密。...二、日志 2.1 Swift日志 Swift中打印日志的语法可以用print,也可以用NSLog。但是尽量别用NSLog,因为Swift中用NSLog,系统日志中是能查到的。...Keychains的内容存放在sqlite中,目录为:/private/var/Keychains。可以通过keychain-dump可以查看钥匙串里存放的的内容。...3.3 plist、sqlite plist、sqlite可以直接在ipa安装文件中获取到,所以不要在这些文件中存放重要信息,如果要保存,就进行加密后再存放。

98120

Swift基础 基础知识

您可以使用元组从函数中返回多个值作为单个复合值。 Swift还引入了可选类型,用于处理值缺失的情况。可选内容要么说“有一个值,它等于x”或“根本没有值”。...除非您需要使用特定大小的整数,否则请始终使用Int来处理代码中的整数值。这有助于代码一致性和互操作性。...与 Swift 中的其他类型安全示例一样,这种方法可以避免意外错误,并确保特定代码部分的意图始终清晰。 元组 元组将多个值分组为单个复合值。元组中的值可以是任何类型,不必是彼此相同的类型。...HTTP状态代码是Web服务器在请求网页时返回的特殊值。如果您请求不存在的网页,则返回404NotFound的状态代码。...通过返回具有两个不同值的元组,每个值都具有不同的类型,该函数提供了有关其结果的更有用的信息,而不是只能返回单个类型的单个值。有关更多信息,请参阅具有多个返回值的函数。

13700

使用 key paths 创建自定义查询函数

通过如何在 Swift 中自定义操作符,Swift 中 key paths 的能力,函数/结果构建器 等功能,我们有很多机会为特定用例进行调整 Swift 的语法。...$0.isRead } 这肯定不是一个大问题,但如果上述操作是我们在代码上的许多不同地方上演的东西,那么我们可能会开始问自己:“如果我们也可以使用否定的布尔值的 key paths 语法会不会更好?...$0[keyPath: keyPath] } } 以上基本上就是是重载内置的 !...操作符一样,我们也可以用 == 运算符进行同样的事情,我们将返回一个返回 Bool 的闭包,然后可以直接传递给筛选器(如 filter 过滤器): func ==(lhs...我倾向于在中间的某个地方停下,认为我们确实可以让部分 Swift 的语法调整为适合我们的编写,但同时,我认为应该始终盯紧我们使 diam 更简单的目标来调整这些代码。

2K30

SwiftUI + Core Data App 的内存占用优化之旅

这意味着,在惰性容器中,视图一经创建,其存续期将与该容器一致( 容器不销毁,则视图将始终存续 )。...所谓行缓存,便是指当 Core Data 从 SQLite 中获取数据时,首先将数据以接近原始存储格式的形式保存在行缓存( 内存 )中。...不过通过实验中分析,这些数据肯定是被缓存的,且在被加载后,并不会因为返回惰值而自动从内存中清除 因此,即使我们将托管对象返回成惰值状态,也仅能节省极少的内存占用( 在本例中几乎可以忽略不计 )。...终极优化:私有上下文 + 不持有托管对象 思路 在第二轮优化中,尽管通过将托管对象转换为惰值解决了一部分内存占用问题,但存在于行缓存中的数据始终还是无法得到有效清除。...} } SwiftUI 只会持有 @StateObject 所对应实例的引用,实例中属性数据的释放仍遵循标准的 Swift 语言逻辑。

2.4K40
领券