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

织梦网站调整网站风格的特点

织梦网站调整,网站风格的特点,怎样黑进别人的网站,wordpress博客主题手机概述 各位似秃似不秃小码农们都知道,在苹果众多开发平台中 CoreData 无疑是那个最简洁、拥有“官方认证”且最具兼容性的数据库框架。使用它可以让我们非常方便的搭建出 App 所需要的持久存储体系。 不过,大家是否知道在 CoreData 中还存在一个 Transfo…

在这里插入图片描述

概述

各位似秃似不秃小码农们都知道,在苹果众多开发平台中 CoreData 无疑是那个最简洁、拥有“官方认证”且最具兼容性的数据库框架。使用它可以让我们非常方便的搭建出 App 所需要的持久存储体系。

在这里插入图片描述

不过,大家是否知道在 CoreData 中还存在一个 Transformable 类型,它到底是个啥?应用场景有哪些?在最新的 SwiftData 中有没有对应物?对于开发者又有哪些“见雀张罗”的撸码陷阱和最佳实践呢?

在本篇博文中,您将学到如下内容:

  • 概述
  • 1. 查无此“类”:奇怪的 Transformable 类型
  • 2. Transformable 存在的真谛
  • 3. 派生自 NSObject 的内置类
    • 3.1 数组(Array)
  • 总结

本系列文章一共包括将近 3w 枚机智而幽默的文字、详实的大段代码示例以及海量图片,定能让小伙伴们对 Transformable 类型的“驾驭”更加胸有成竹、胜券在握!

那还等什么呢?让我们马上开始 Transformable 大冒险吧!
Let’s go!!!😉


1. 查无此“类”:奇怪的 Transformable 类型

Core Data 是由 Apple 开发的自家数据持久化框架,其历史可以追溯至 2005 年。它最初作为 OS X 10.4(Tiger) 的一部分发布,旨在为 macOS 应用程序提供高效的 对象图 管理和 持久化 支持。

而随着时代的演进,Core Data 的核心设计理念已包括对象关系映射、内存数据管理以及与 SQLite 的无缝集成,但其定位并非单纯的数据库框架,而更像是一个更高层次的模型层解决方案。

在这里插入图片描述
在这里插入图片描述

6 年之后,Core Data 于 2011 年正式登陆 iOS 5,成为 iOS 开发的标准数据管理工具。这标志着 Core Data 开始支持移动端开发,小码农们能够通过其可视化建模工具和自动化数据同步功能,简化复杂的数据操作流程。


更多关于 CoreData 开发的进一步介绍,请小伙伴们移步如下链接观赏精彩的内容:

  • “一人得道,雨燕升天”:Swift 协议扩展助力 CoreData 托管类型(上)
  • 一场陟遐自迩的 SwiftUI + CoreData 性能优化之旅(上)
  • 消失的它:揭开 CoreData 托管对象神秘的消失之谜(上)
  • “群芳争艳”:CoreData 4 种方法计算最大值的效率比较(下)
  • 蹊跷的崩溃:CoreData 数据保存时提示“不可接受类型”(Unacceptable type)
  • 漫谈初学者处理 CoreData 数据之启示录
  • 『第十一章』数据持久化:CoreData 与 CloudKit

众所周知,在 Xcode 中我们可以利用 CoreData 模型编辑器为我们心仪的 App 搭建怡人的数据模型。我们可以按需为模型中表的各个字段选择合适的类型:

在这里插入图片描述

在众多耳熟能详的数据模型中,有一个看起来是那么的“恢诡谲怪”,让人一下子摸不着头脑,它就是 Transformable 类型。


和 CoreData 类似的是苹果最新的 SwiftData 框架,它是一款现代化的数据库框架,其采用描述性的设计语言,借助于大量的宏定义,作为一名“单枪匹马”的勇士可以完全脱离于数据库编辑器工具而独立遨游于数据海洋之上。

更多关于 SwiftData 的详细介绍,请小伙伴们移步如下链接观赏精彩的内容:

  • 如何在 SwiftUI 视图中使用分页(Paging)机制显示 SwiftData 数据(一)
  • 如何让 SwiftUI 中 @Query 宏能够动态改变获取的 SwiftData 数据结果
  • 使用 SwiftData 历史记录追踪(History Trace)跨进程同步 App 和 Widgets 间的数据更改
  • SwiftData 共享数据库在 App 中的改变无法被 Widgets 感知的原因和解决
  • iOS 18 中全新 SwiftData 重装升级,其中一个功能保证你们“爱不释手”
  • 『第十二章』数据持久化:SwiftData

我们知道,用 CoreData 模型编辑器设定的绝大多数类型都可以直接对应到其托管类的定义中去:

extension Record {@nonobjc public class func fetchRequest() -> NSFetchRequest<Record> {return NSFetchRequest<Record>(entityName: "Record")}@NSManaged public var date: Date?@NSManaged public var randomNumbers: NSObject?@NSManaged public var result: Bool@NSManaged public var usingMagic: NSObject?@NSManaged public var owner: Human?}

但是,与此截然不同的是: **Transformable 类型在托管类的定义中根本“无迹可寻”。

如上代码所示,randomNumbers 和 usingMagic 都是 Transformable 类型,而实际上,它们却被映射到了所谓 NSObject? 类型的头上。

那么,这个奇怪的 **Transformable 类型到底有神马用途呢?

2. Transformable 存在的真谛

实际上,Core Data 中 Transformable 类型是一种灵活、定制性很强的数据类型,它允许开发者存储那些无法直接映射到 Core Data 内置基本类型(如 String、Int、Date 等)的自定义对象或复杂数据结构。

它的核心作用是通过 序列化与反序列化 机制,将自定义对象转换为可存储的二进制数据(如 Data 类型),从而将它们持久化到数据库(如 SQLite)之中。

形象的说,Core Data 中 Transformable 类型就好像特种部队中的“剃刀小队”,它们本领高强、颜值出众,专门擅长解决特殊的“定制任务”。

光是这样说,可能大家依旧还是不明所以。所以下面我们就分 4 种应用场景来如数家珍的具体说说 Transformable 类型的“超群绝伦”吧。

3. 派生自 NSObject 的内置类

好戏开始了!我们先用 Transformable 类型最简单的使用场景来为整个冒险拉开序幕,即:Array 和 UIColor 对象的存储。

3.1 数组(Array)

最简单的应用场景是保存值类型的数组(Array) 。

首先,在 Record 托管类中新建一个名为 randomNumbers 的字段,并且将其类型设置为 Transformable:

在这里插入图片描述

接着,创建一个帮助方法 makeRandomNumbers() 用来生成随机整数数组:

func makeRandomNumbers() -> [Int] {var ary = [Int]()for _ in 0..<3 {ary.append(Int.random(in: 0...1000))}return ary
}

最后,我们可以这样保存 Record 的实例:

func fight() throws {let context = managedObjectContext!let record = Record(context: context)record.date = .nowrecord.result = .random()record.owner = selflet numbers = makeRandomNumbers()record.randomNumbers = numbers as NSObjecttry context.save()
}

在上面的代码中,我们将整数数组作为 NSObject 类型的值稳妥的存入到了 randomNumbers 字段中。这样做可以成功的原因在于:[Int] 数组的类型实际上是 Array<Int> 类型,而 Array 类型几乎可以“无痛地”转换为 NSArray 类型,最终 NSArray 又恰巧是一个 NSObject 类型。

同样,我们需要将存放在 randomNumbers 字段中的整数数组读取出来,这也只需一个小小的类型转换即可完成:

LabeledContent("") {Button("行动") {try! villain.fight()}.font(.title3.bold()).buttonStyle(.borderedProminent)
}let numbers = record.randomNumbers as! [Int]                      
LabeledContent("随机数组") {HStack {ForEach(numbers, id: \.self) { num inText("\(num) ").font(.headline)}}
}

运行代码可以发现,我们已经可以轻松的保存和取出 randomNumbers 中正确的内容了:

在这里插入图片描述

不过此时此刻,眼尖的小伙伴们可能会瞥见 Xcode 控制台中刺眼的警告:

在这里插入图片描述

这又是怎么回事呢?

在下一篇博文中,小伙伴们将继续我们的 Transformable 大冒险,敬请期待吧!

总结

在本篇博文中,我们讨论了 CoreData 中 Transformable 到底是什么类型?以及它存在的意义。随后,我们还介绍了将整数数组转换为 Transformable 类型的方法。

感谢观赏,我们下一篇再会吧!😎


文章转载自:

http://8tfpNIko.gyqnp.cn
http://MH7k1lqk.gyqnp.cn
http://2gTX84wu.gyqnp.cn
http://b30CmDVX.gyqnp.cn
http://7bGeT55R.gyqnp.cn
http://ltLbOJJz.gyqnp.cn
http://pOFGLCsf.gyqnp.cn
http://28enw2Ly.gyqnp.cn
http://z7Nsi5gi.gyqnp.cn
http://e5LPMtDw.gyqnp.cn
http://fDjUPs06.gyqnp.cn
http://tj3qpxbG.gyqnp.cn
http://wWKYKNdv.gyqnp.cn
http://4RLKaNbr.gyqnp.cn
http://H4UCV7Xf.gyqnp.cn
http://CKWybnRi.gyqnp.cn
http://Y8INmVK7.gyqnp.cn
http://fex2LBXd.gyqnp.cn
http://YEBACuTq.gyqnp.cn
http://uVKTz1VW.gyqnp.cn
http://7k4iArYv.gyqnp.cn
http://yPJzgYng.gyqnp.cn
http://nsx9EY2C.gyqnp.cn
http://v6D8H6qj.gyqnp.cn
http://nIHYz4kZ.gyqnp.cn
http://YblNYfmr.gyqnp.cn
http://yaF1d1I1.gyqnp.cn
http://0s70ZYTI.gyqnp.cn
http://W4Szyqog.gyqnp.cn
http://4800j4ha.gyqnp.cn
http://www.dtcms.com/wzjs/735042.html

相关文章:

  • 红安县建设局网站网站建设柒金手指花总12
  • 企业 php网站建设百度导航最新版本
  • 想做一个能上传视频的网站怎么做小型网站开发开题报告范文
  • 网站建设 通讯员网站建设优秀网站建设
  • 网站备案域名所有人百度大全免费下载
  • 外贸网站建设商家9.9网站怎么做
  • 手机做网站教程哈尔滨模板自助建站
  • 模板网站建设的弊端聊天软件开发需要多少钱
  • 怎么找网站东莞知名网站优化公司
  • 注册网站建设公司附近广告公司位置
  • 织梦网站搜索怎么做360搜索入口
  • 渭南做网站价格建设部网站公示
  • 将台地区网站建设中国建设银行网站个人客户
  • 做山西杂粮的网站深圳建设官方网站
  • 旅游网站前台模板福州seo按天扣费
  • 江苏省建设考试网站准考证打印微信推送在哪个网站做
  • 做网站怎么备案wordpress建站需要多久
  • oto网站开发网联科技网站建设
  • 首页设计公司泰州seo网络推广
  • 网站建设犭金手指a15成都装修公司排名前十强有哪些
  • 网站开发系统调研目的数据库内容进 wordpress
  • 做化工的网站c2c模式的优点和缺点
  • 国家住房和城乡建设部官方网站网站开发女生可以做吗
  • 北京著名网站设计公司佛山营销网站开发怎么选
  • 服饰 公司 网站建设建一个营销网站多少钱
  • 上海网站建设选缘魁-企查wordpress有插件怎么用
  • 昆明二级站seo整站优化排名万网张向东有多少资产
  • 做网站的价格 外贸建设企业网站的好处
  • 赣州做网站找谁freenom免费域名注册不了
  • 网站开发和运作的财务预算徐州网站快速优化排名