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

SwiftUI 与 Core Data —— 问题

当前,如何让 Core Data 融入流行的应用架构体系,在 SwiftUI、TCA、Unit Tests、Preview 等环境下更加顺畅地工作已成为我的主要困扰和研究方向。...如此一来会出现如下问题:为了保持与 Objectiv-C 的兼容性( Core Data 的内部数据仍采用 Objective-C 实现 ),开发者在数据模型编辑器中,仅能用有限的数据类型来描述属性。...事实上,Core Data 的托管环境已经是当下导致 SwiftUI 预览失败的主要原因之一。另外,对托管环境的准备和重置也会拖慢 Unit Tests 的速度,影响开发者编写单元测试的意愿。...为了避免出现线程安全问题,让数据符合 Sendable 协议是有效的手段。很显然,托管对象并不具备符合 Sendable 协议的基础。...由于一直没有为这个系列的文章想好恰当的题目,便暂且临时采用了 “SwiftUI 与 Core Data” 这个名称。如果你有什么好的建议欢迎告诉我。希望本文能够对你有所帮助。

85440

苹果全新UI框架来了!可视化编程,自动化减少20%代码量

SwiftUI解决了哪些问题? 虽然Storyboards和XIB很有用,但并不是所有人都喜欢。...而SwiftUI通过4种方式,解决了上述问题: 用一个新的声明式UI结构,定义了的布局的外观和工作方式 更新UI预览会自动生成新的Swift代码,反之,更改Swift代码也会更新UI预览 Swift中的任何绑定例如有效的...现在,一个全新的用户界面系统诞生,有助于避免新开发人员遇到的大量问题。...使用SwiftUI之前要注意的事情 首先,SwiftUI目前只支持10.15 beta以及更新的macOS系统,当然10.15 beta已经是目前最新了。 其次一些可能出现的小问题也是需要注意的。...比如,它只支持Swift,你不能在Obj-C里使用SwiftUISwiftUI目前还不是很成熟,正在从事iOS开发的程序员可能更应该继续使用Obj-C,直到SwiftUI足够成熟。

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

Ask Apple 2022 与 SwiftUI 有关的问答(下)

Jane 的 自动根据宽度排版[10] 视频与该问题十分契合。阅读 The SwiftUI Layout Protocol [11]了解如何创建自定义布局。...Too complex to type checkQ:我在 iOS 14 SwiftUI 中遇到一个问题,我试图有条件地显示 3 个符合 Shape 协议的对象中的一个。...Q&A ( 集锦 - 简体中文 )下文中的问题来自开发者与苹果工程师在【 集锦 - 简体中文 】频道进行的中文讨论( 没有出现在英文 SwiftUI 频道中 )。我直接对其进行了复制粘贴。...TextField 中文输入的问题Q:请问 SwiftUI 的 TextField 在中文输入时,会在字母选择阶段就直接上屏,造成输入内容错误的问题是已知问题吗?会在 16.1 RC 修复吗?...但这个滚动有两大问题,1、是一个未公开的半成品,有可能会被从 SwiftUI 框架中移除;2、不支持懒加载,即使和 Lazy 视图一起使用也会一次性加载全部的视图。

14.7K30

避免 SwiftUI 视图的重复计算

并且 SwiftUI 会在其变化时自动更新( 重新计算 )对应的视图。 SwiftUI 上有一个困扰了不少人的问题:为什么无法在视图的构造函数中,更改 State 包装的变量值?...了解了上述过程,问题便有了答案。...printChanges() Text(student.age,format: .number) } } 上面的代码虽然实现了将 Student 的显示子视图化,但是由于构造参数的设计问题...为了解决这个问题,我们应该调整传递给子视图的参数类型和内容,仅传递子视图需要的数据。...会在主线程上运行触发器闭包,如果闭包中的操作比较昂贵,可以考虑将闭包发送到后台队列 总结 本文介绍了一些在 SwiftUI 中如何避免造成视图重复计算的技巧,除了从中查找是否有能解决你当前问题的方法外

9.2K81

GeometryReader :好东西还是坏东西?

本文将对 GeometryReader 的“常见问题”进行剖析,看看它是否真的如此不堪,以及那些被批评为“不符预期”的表现,是否其实是因为开发者的“预期”本身存在问题。...GeometryReader 的性能问题 只要了解 GeometryReader 获取几何信息的时机,就能理解其对性能的影响。...由于早期的 SwiftUI 缺少了 LazyGrid 等布局容器,开发者只能通过 GeometryReader 来实现各种自定义布局。当视图数量较多时,这将会导致严重的性能问题。...自从 SwiftUI 补充了一些之前缺失的布局容器后,GeometryReader 对性能的大规模影响已经有所减轻。特别是在允许自定义符合 Layout 协议的布局容器后,上述的问题已基本解决。...在 SwiftUI 布局 —— 尺寸( 下 )[11] 一文中,我们探讨过有关尺寸的“里子和面子”的问题

42170

onAppear 的调用时机

本文将通过 SwiftUI 4 提供的新 API ,证明 onAppear 的调用时机是在布局之后、渲染之前。 问题 同之前多篇博客类似,我们还是从 聊天室 的一个 问题开始。...有关布局的流程请阅读 SwiftUI 布局 —— 尺寸[5] 渲染 SwiftUI 通过调用更加底层的 API,将视图在屏幕上呈现的过程。此过程严格意义上已经不属于 SwiftUI 的管理范畴了。...解答 回到本文最初的问题。...在不考虑使用绝对索引值是否正确的情况下,通过下面的代码,便可以避免问题的出现: if !...Text(getWord(at:0)) } 第二段代码 对 List 进行求值 由于 ForEach 会根据 newWords 的数量进行子视图的处理,因此尽管此时 newWords 为空,但也不会有问题

1.1K10

onAppear 的调用时机

本文将通过 SwiftUI 4 提供的新 API ,证明 onAppear 的调用时机是在布局之后、渲染之前。问题同之前多篇博客类似,我们还是从 聊天室 的一个 问题 开始。...有关布局的流程请阅读 SwiftUI 布局 —— 尺寸 渲染SwiftUI 通过调用更加底层的 API,将视图在屏幕上呈现的过程。此过程严格意义上已经不属于 SwiftUI 的管理范畴了。...解答回到本文最初的问题。...在不考虑使用绝对索引值是否正确的情况下,通过下面的代码,便可以避免问题的出现:if !...Text(getWord(at:0))}第二段代码对 List 进行求值由于 ForEach 会根据 newWords 的数量进行子视图的处理,因此尽管此时 newWords 为空,但也不会有问题完成布局调用

2K20

解析 SwiftUI 中两处由状态更新滞后引发的严重 Bug

当视图正在滚动时返回上一层视图会导致应用崩溃这是一个由 xiaogd 在我的 Discord 论坛中提出的 问题。...为什么状态更新滞后会导致严重错误由于 SwiftUI 的 不透明性,想要分析这些问题的成因并不容易。...因此,当我们首先更新状态,然后 SwiftUI 再响应该状态的变化(返回上层视图),即使此时对 AG 进行清理,仍将可以保证 AttributeGraph 的完整性,应用自然不会出现问题。...总结今年 SwiftUI 已经进入了第五个年头。随着版本的提高,SwiftUI 的功能也确实得到了相当程度的增加。...不过,即使在最新的版本中,在一些对 UIKit(AppKit)进行二次包装的控件中,仍有不少细节处理不到位的问题。希望 SwiftUI 开发组能尽早重视这些问题

579110

iBug 16 有感

欢迎大家在 Discord 频道[2] 中进行更多地交流到 2022 年,SwiftUI 已经迈入了第四个年头。...尽管在之前的版本更新过程中,SwiftUI 也出现了或多或少的问题,但从来也没有像 SwiftUI 4 这么严重。...Bug 众多的现象不仅仅表现在 SwiftUI 上,在 iOS、macOS 以及苹果很多其他的产品上都有所体现。这绝非苹果独有的问题,整个社会目前都处在一种浮躁的发展轨迹中。...一方面表明,苹果的开发管理出现了明显的问题,另一方面,也间接地证明了 SwiftUI 4 重写了大量的底层代码,待这些代码稳定后,可能会有不错的结果( 也许是更多的 Bug )我们真的需要走得这么快吗?...stay_away_from_bugs_lie_down_together我正以 Twitter[3]、 Discord 聊天室[4] 、博客留言等讨论为灵感,从中选取有代表性的问题和技巧制作成 Tips

82820

我庆幸果断放弃了SwiftUI:它还不够成熟

“这是个好主意,但 SwiftUI 的主要问题是完全不成熟。”“它具有复杂的行为,不适用于需要大容量或复杂 UI 的 App。” “而且 SwiftUI 改进太慢了。” .............我还遇到了其他问题,因为 SwiftUI 高度依赖于 View 协议的实现结构,但 View 协议又有关联的类型,所以只能把它当成约束来用。...它的显示效果就是主窗口中的一张表,出于学习的目的,我当然还是想继续用 SwiftUI 喽。毕竟初次尝试肯定会有种种问题,应该再给它一次机会。...变更从一种环境传播至另一环境时,我也遇到了类似的延迟问题。这可以说是压死骆驼的最后一根稻草了,我决定放弃 SwiftUI,继续用 AppKit。...我打算在 Nihongo no Kana 的更新版本中再用用 SwiftUI,毕竟那款 iOS/iPadOS 应用的重绘频率低得多,所以应该不会有太大问题

4.8K20

从用SwiftUI搭建项目说起

前言 ---- 后续这个SwiftUI分类的文章全部都是针对SwiftUI的日常学习和理解写的,自己利用Swift写的第二个项目也顺利上线后续的需求也不是特着急,最近正好有空就利用这段时间补一下自己对...也是在学习当中,现在能查阅的关于SwiftUI的资料很多是需要收费的,遇到问题只能想办法努力解决,有写的不钟意的地方,希望多加指正!...我们在后面遇到的一些问题也会回到这个官方文档进行一些验证。...Apple SwiftUI SwiftUI ---- 在进入项目搭建先说说我自己对SwiftUI的一个基本的认知: SwiftUI我觉得对iOSer来说最大的是开发UI模式的优化...下面的参考文章相信能帮助我们更好的理解一下,SwiftUI! 参考文章: Apple SwiftUISwiftUI 谈声明式 UI 与类型系统 如何评价 SwiftUI? 项目地址

4.4K20

WWDC 23 ,SwiftUI 5 和 SwiftData 的初印象

欢迎大家在 Discord 频道[2] 中进行更多地交流 SwiftUI 如果说从 SwiftUI 1.0 到 4.0 每年的升级是一种小修小补的行为,那么今年苹果在 SwiftUI 5.0 上做出的努力至少算得上是中期改款了...这从根本上解决了当前影响 SwiftUI 应用( 过渡计算 )的效率问题。让开发者可以更加自由的来设计数据结构以及随心所欲的注入数据源。 不过很遗憾,这项新特性只能在 SwiftUI 5 上实现。...自定义迁移 plan 在第一版中有问题 可以与 Core Data 代码混用,需通过 entityVersionHashesByName 来判断 SwiftData 与 Core Data 两者的模型是否完全一致...,可直接驱动视图更新(传递时无需使用属性包装器) Attribute 的派生选项被废弃了 可以在 Xcode 中使用 Model Editor 将 Model 转换为 SwiftData 代码,但目前问题还不少...Model 原来设置的 Index,目前无法转换(可生成对应的代码,但 Attributed 尚未完全) 所有针对 Core Data 的启动参数目前同样适用 modelContext 的自动保存有问题

34410

SwiftUI 视图的生命周期研究

SwiftUI 的视图 在 SwiftUI 中,视图定义了一块用户界面,并以视图树的形式组织在一起,SwiftUI 通过解析视图树来创建合适的渲染。...销毁实例——onDisapper 有了上面的关于视图的定义,我们再看这种关于生命周期的描述便会发现其中的问题——将两种视图类型视为一体,将不同类型的视图的生命周期强行混编到一条逻辑线上。...轻量化的构造器 目前,很多 SwiftUI 的开发者都已经注意到了结构体实例会被多次创建的问题。...这在相当程度上改善了因多次创建实例而引发的效率问题。 让复杂的任务仅执行一次 但是,onAppear 或 task 也并非只会执行一次,如何保证让某些负担较重的任务只在页面中执行一次呢?...利用@State 的生命周期同视图的生命周期一致的特性,便可以很好的解决这个问题

4.3K30

肘子的 Swift 周报 #001

详细解释最重要的概念,并帮助你建立扎实的理解 SwiftUI 的基础。 由于 SwiftUI 是一个庞大的框架,本书侧重于作者认为对理解至关重要的框架背后的概念。...它不是 SwiftUI 平台特定 API 的参考,而是一个指导,以提升你对 SwiftUI 工作原理的直觉。 我对 SwiftUI 的一些深入理解都来自于此书的旧版本。...得益于字节跳动和作者对 SwiftUI 底层的研究,我们有机会窥探 AttributeGraph: cycle detected through attribute 问题出现的原因。...作为 A Companion for SwiftUI[17] 的作者,Javier 在 SwiftUI 发布初期就表现出对 SwiftUI 的动画和布局实现的浓厚兴趣,并通过博客展示了令人惊叹的研究成果...在本文中,Bruno Rocha 将深入研究 Swift 编译器,回答上述问题。 作者免责声明:我从未在苹果公司工作,与 async/await 的开发无关。

23840

SwiftUI 中实现视图居中的若干种方法

ZStack 空间 )Text 最大可用宽度为 300Color 与 Text 将按照对齐指南 center 进行对齐( 看起来就是 Text 显示在 Color 的中间 )如果将代码改写成下面的方式就会出现问题...显式设置可以解决该问题,请养成显式设置 spacing 的习惯 )VStack { // 没有设定 spacing ,显式设置可修复 spacing 不均匀的问题 ZStack {...总结本文选取了一些有代表性的解决方法,随着 SwiftUI 功能的不断增强,会有越来越多的手段可供使用。万变不离其宗,掌握了 SwiftUI 的布局原理,无论需求如何变化都可轻松应对。...我为本文这种通过多种方法来解决一个问题的方式添加了【小题大作】标签,目前使用该便签的文章还有:在 Core Data 中查询和使用 count 的若干方法[6]、在 SwiftUI 视图中打开 URL...我正以聊天室、Twitter、博客留言等讨论为灵感,从中选取有代表性的问题和技巧制作成 Tips ,发布在 Twitter 上。

6.6K40

干货 | 关于SwiftUI,看这一篇就够了

SwiftUI。...Text("Hello World") } } 然而,很多时候在UI布局中是确定不了闭包中的具体类型,有可能是Text、Button、List等,为了解决这一问题...body: Self.Body { get } } 2.2 PropertyDelegate 复杂的UI结构一直是前端布局的痛点,每次用户交互或者数据发生改变,都需要及时更新UI,否则会引起某些显示问题...属性代理(propertyDelegate)的出现就是解决这个问题的,属性代理是一个泛型类型,不同类型的属性都能够通过该属性代理进行特定的处理: @propertyDelegate public struct...内部由无数这样的单向数据流组合而成,每个数据流都遵循相应的规范,这样开发者在排查问题的时候,不需要再去找所有与该数据相关的界面进行排查,只需要找到相应逻辑的数据流,分析数据在流程中运转是否正常即可。

5.7K10
领券