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

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

采用了常见解决方案,即旋转滚动视图和里面的每个单元格,以获得预期倒置列表 iOS 上,这很有效。但在 macOS 上,使 CPU 使用率保持 100%。...Swiftcord[12] 代码展示了如何SwiftUI 下实现倒置列表。阅读 优化 SwiftUI List 显示数据响应效率[13] 一文,了解苹果工程师推荐方法。...两种方案,如果在数据量很大情况下,更倾向于第一种方式,这样可以按需求读取数据。... SwiftUI 4 可以使用 .scrollContentBackground(.hidden) 隐藏列表默认背景searchableQ:是否有办法.searchable() 修饰以编程方式设置搜索字段焦点...macOS APIQ:对于运行 Monterey Mac,能否如何SwiftUI 实现下面需求建议:打开一个窗口窗口中初始化数据找到所有打开窗口确定一个窗口是否打开从不在窗口视图中关闭一个窗口

14.7K30

Ask Apple 2022 与 SwiftUI 有关问答(上)

是否有任何建议用来检测列表行选择,类似于 “NavigationLink”,但不导航到另一个视图(例如,显示 Sheet 或从列表中选择一个选项 )?...然后根据焦点状态来定制显示样式。希望这对你设计有用。自从 SwiftUI 3.0 提供了 safeAreaInset 视图修饰之后,实现问题中案例将不再是难事。...例子,不拖动时从 0 到 75,拖动时从 0 到 100。有什么办法可以阻止这种情况吗?A:你可以用 .chartYScale(domain: 0 ... 75) 锁定 Y 轴刻度域。...只允许打开内容类型文件,但不能进行编辑。MVVMQ: UIKit 时代,MVVM 是一种常见架构,视图显示数据来自一个单独 viewModel 类。...跨视图层次共享Q:在数据来自 API 响应情况下,多个视图之间共享数据最佳方式是什么

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

优化 SwiftUI List 显示数据响应效率

首先创建一个假设性需求: 一个可以展示数万条记录视图 从上个视图进入视图时不应有明显延迟 可以一键到达数据顶部或底部且没有响应延迟 响应迟钝列表视图 通常会考虑采用如下步骤以实现上面的要求:...找寻问题原因 或许有人会认为,毕竟数据量较大,进入列表视图有一定延迟是正常。但即使 SwiftUI 效能并非十分优秀今天,我们仍然可以做到以更小的卡顿进入一个数倍于当面数据列表视图。...也就是当显示主界面菜单时,列表视图已经完成了实例创建(可以通过 ListEachRowHasID 构造函数添加打印命令得以证明),因此也不应是实例化列表视图导致延迟。...IO、数据库列表视图实例化等因素,那么有极大可能源自 SwiftUI 内部处理机制。... SwiftUI 视图生命周期研究[3] 一文对 List 如何对子视图显示进行优化做了一定介绍。

9K20

老人新兵 —— 一款 iOS APP 开发手记

之前接触过不少种编程语言,因此对来说编程语言基本语法理解起来没有什么太大问题,主要是如何能将其特性发挥出来。...尤其之后开发过程,随着理解深入,越发感受到了魅力所在。实现 app UI 有了一定技术基础情况下,便开始了关于 i 数据库方面的选择。很早前使用过关系型数据库,因此还算有点基础。... Xcode 11 beta 版本可以采用一些非常规手段实现这一功能,不过目前已被屏蔽了。导致无法很好地实现双击 TabView 图标返回 Tab 根视图,比较郁闷。...当一个 view 中有基于 ForEach 动态变化数据时,如果 view sheet 数据变化后会导致触发异常,如果将 view 从 Sheet 中提取出来直接显示则无此问题。...开发环境下 app 里云数据库数据和 app store 下载 app 数据不互通( 同一个 id ),开发时模拟数据也不能和实机数据云同步,必须在多个实机才能测试。

2.5K40

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

这是个宝贵机会,能让认真体验一把 SwiftUI 并探索其内部工作原理。 起初项目工作良好,SwiftUI 表现可以说非常满意,甚至创建了自己修改,以便更轻松地显示警报消息。...运行良好,所以我根本想象不到后续会出什么大乱子。 但在开始实现更复杂检查视图时,特别是涉及带有 / 不带步进或颜色选择多个文本字段时,整个运行速度开始剧烈下降。...但这会导致检查值出现延迟,因此地图编辑交互过程(比如使用移动工具时)结果不准确,所以效果还是称不上完美。 但我觉得这可能只是个独立问题,并不能因此把 SwiftUI 一棒子打死。...显示效果就是主窗口中一张表,出于学习目的,当然还是想继续用 SwiftUI 喽。毕竟初次尝试肯定会有种种问题,应该再给它一次机会。...如大家所见,这是个复杂窗口,包含多种不同上下文(上方「Sprite 资产数据库列表,左侧特定「Sprite 资产数据库」内容,以及其他与选定 Sprite 资产对应编辑元素)。

4.9K20

如何在Xcode下预览含有Core Data元素SwiftUI视图

结合两年来SwiftUI中使用Core Data经验和教训,我们将在本文中探讨: •导致SwiftUI预览崩溃部分原因•如何在之后开发避免类似的崩溃出现•如何在Xcode安全可靠地预览含有...•模拟设备管理删除模拟再重新添加 上述手段,多数也都适用于修复某些情况下预览崩溃。...虽然完全破坏了单向数据逻辑和美感,但由于过分好用,因此SwiftUI开发仍被广泛采用。...此种情况下,通常我们会在模拟删除App,重新安装运行即可解决问题。由于预览也是模拟沙盒中同样可能出现类似的问题。可以使用上文中关于预览模拟修复方法来尝试解决。...预置复杂数据Bundle数据库 对于拥有复杂数据模型应用如何创建用于预览演示数据呢?

5.1K10

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

SwiftUI ,有很多手段可以达成此目的。本文将介绍其中一些方法,并对每种方法背后实现原理、适用场景以及注意事项做以说明。...显式设置可以解决问题,请养成显式设置 spacing 习惯 )VStack { // 没有设定 spacing ,显式设置可修复 spacing 不均匀问题 ZStack {...为本文这种通过多种方法来解决一个问题方式添加了【小题大作】标签,目前使用便签文章还有: Core Data 查询和使用 count 若干方法[6]、 SwiftUI 视图中打开 URL...正以聊天室、Twitter、博客留言等讨论为灵感,从中选取有代表性问题和技巧制作成 Tips ,发布 Twitter 上。...每周也会对当周博客上新文章以及 Twitter 上发布 Tips 进行汇总,并通过邮件列表形式发送给订阅者。订阅下方 邮件列表[10],可以及时获得每周 Tips 汇总。

6.6K40

Ask Apple 2022 与 Core Data 有关问答

一个应用程序尝试应用程序有 30,000 多条记录,但它们无法从 Mac ( 开发状态 )同步到 iPhone( 开发状态 )。A:如果没有更多细节,很难确定。...希望能够 UI 显示进度视图,以便首次启动应用程序用户可以看到他们数据正在从云中下载。A:NSPersistentCloudKitContainerEvent 填补了这个角色。...您可以根据需要将通知侦听绑定到事件以更新和显示状态。无法主动触发同步。...一旦针对 CKContainer 运行,容器所有数据库都将具有相同 Schema( 公共/私有/共享 )。...我们例子,我们首先从实体删除所有数据( 也就是将该数据迁移到新实体 ),然后从项目中删除实体,因为我们可以确定所有用户都已升级。A:是的,但是,旧版本应用程序会做什么

2.8K20

Swift 周报 第四十一期

如果它们只是文档列出,即使只是附录或脚注,我会感到更高兴。 请注意,在这种情况下,顺序也很重要。需要知道完整布局,以便将其映射到寄存等等。...如果有人愿意接手并制定正式提案和实施,随时可以着手。 使用了相对新但规模较小 Verse 编程语言几个月后,开始喜欢能够 if 语句条件列表创建中间常量和变量,以及执行常规函数能力。...开始思考为什么 Swift 没有这样相当方便功能。与 Verse 不同,Swift 不将抛出错误视为条件。这是可以接受并不打算改变这一点。 以下是希望 Swift 中被允许示例。...这有点类似于我们如何在结果构建创建本地常量,这些常量不会立即被消耗。 这个想法将扩展 if、guard 和 while 条件列表。...[8] 假设想要将一个任意任务记录在一个变量,以便稍后可以取消

20540

Ask Apple 2022 与 Core Data 有关问答 (下)

方法 Persistent History 部分有助于确保你不会大量重复地从数据库获取数据,并且仅在你需要数据发生更改时才刷新。又是一个有关持久化历史跟踪问题。...检索 NSAttributedStringQ:需要将 NSAttributedString 存储在数据库,并且可以对属性字符串任何文本进行搜索。...注意到,当我使用 Safari 客户端从 CloudKit 数据库删除一条记录时( 通过 CloudKit Dashboard ),对象仍会保留在设备上 Core Data 数据存储。...即使你模型编辑中将属性( 例如字符串 )标记为非可选( 设定了默认值 ),但在从托管对象获取属性值时候,返回值仍会是 Optional 类型。...数据手动排序Q:应用程序,用户可以表视图中通过拖放来重新排列项目。

3.2K20

SwiftUI:使用 @EnvironmentObject 从环境读取自定义值

但是我们也可以将自定义对象发送到环境,并在以后将它们读出来,这使我们可以复杂应用程序更轻松地共享数据。...您已经了解了如何使用@State处理单个视图局部状态,以及@ObservedObject如何使我们视图之间传递一个对象,以便我们可以共享。...例如,如果视图A可以访问环境对象,而视图B视图A内部——即视图B放在Abody属性——那么视图B也可以访问环境对象。...Apple已将此工作表情况描述为他们想要修复错误,因此希望以后对SwiftUI更新中会有所改变。...EnvironmentObject属性包装将自动环境查找User实例,并将其找到内容放入user属性

9.5K20

iBug 16 有感

尽管之前版本更新过程SwiftUI 也出现了或多或少问题,但从来也没有SwiftUI 4 这么严重。...Bug 众多现象不仅仅表现在 SwiftUI 上, iOS、macOS 以及苹果很多其他产品上都有所体现。这绝非苹果独有的问题,整个社会目前都处在一种浮躁发展轨迹。...不出 Bug、少出 Bug 已变成奢望,高速迭代变成了主流 —— 迭代修复 Bug ,迭代创造 Bug。...stay_away_from_bugs_lie_down_together正以 Twitter[3]、 Discord 聊天室[4] 、博客留言等讨论为灵感,从中选取有代表性问题和技巧制作成 Tips...每周也会对当周博客上新文章以及 Twitter 上发布 Tips 进行汇总,并通过邮件列表形式发送给订阅者。订阅下方 邮件列表[5],可以及时获得每周 Tips 汇总。

82820

架构之路 (七) —— iOS AppSOLID原则(一)

你需要内存存储来 SwiftUI 预览显示虚假数据。...然后使用这些日期来过滤 Core Data 数据库中所有存储费用。 这样,显示费用会适应您在类初始值设定项传递日期范围值。...对于 SwiftUI 预览,您将始终显示日常开支。 只需更改数据源类型,您就可以使视图更加通用。 这显示了这两个文件中有多少代码重复。 现在,即使您创建了一般视图,您仍然没有在任何地方使用它。...这不仅可以让您删除在此处编写代码,还可以让您轻松地为测试视图提供模拟数据源。 构建并运行。 您会发现一切仍然完好无损,预览现在会显示模拟费用。...例如,您可能想要更改数据库框架、添加跨设备同步或添加服务端组件。 拥有这样特定协议将使将来更改功能变得容易,并使测试这些新功能变得更加容易。

4.7K10

使用 SwiftUI 创建一个灵活选择

前言 最近,正在开发一个 Dribbble 上找到设计 SwiftUI 实现时,想到了一个点子,可以通过一些酷炫筛选扩展该项目以缩小结果列表。...使用 UIKit 时,总是将这种类型视图实现为具有特定 UICollectionViewFlowLayout UICollectionView。但在 SwiftUI 如何实现呢?...VStack 高度是根据两个值计算: 输入数据任何项目的高度(类似于宽度计算,通过使用 reduce 函数,总结与项目相关所有高度) 将显示 VStack 行数 private func...这就是为什么首先将整个 ForEach 循环包装在 HStack ,然后再包装在 Group ,以确保编译可以正确解释一切。...然后,详细介绍了实现选择逻辑,包括如何处理选项布局、宽度和高度,以及如何处理用户与按钮交互。 最后,提供了一个简单视图实现,可以 SwiftUI 中使用选择

24020

WWDC 23 ,SwiftUI 5 和 SwiftData 初印象

,直接定位到滚动视图特定位置,只能使用一次 )、全新滚动条控制( 闪烁 )、可自定义行视图滚动区域顶端和显示区域显示状态( 例如可用其实现类似 watchOS 滚动到顶端子视图缩小视觉效果...其他功能 本次升级内容非常多,导致苹果给出 更新文档[3] ,很多新功能也没有列出。接下来一段时间中,互联网上应该会有不少文章对这些功能进行进一步说明和讲解。...不考虑兼容旧版本情况下,认为 SwiftUI 5.0 升级可以打 95 分(满分 100 分),不过考虑到很多开发者相当一段时间内还无法使用这些新功能,心情就会异常低落。...从这两天使用来看,在其功能和稳定性得到进一步改善和增强情况下,确实会给开发者带来更多便利。...这是目前整理一些有关 SwiftData 问题和注意事项( 原文发表推文中,没有进行更系统归纳): 尚不支持公共和共享数据云同步 在当前版本,通过其他上下文(ModelContext)创建数据并不会自动合并到视图上下文中

34810

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

我们创建完 100 条数据后,重启应用( 重启可以更精准地测量内存占用情况 )并滚动列表至底部。此时应用内存占用为 1.6 GB 左右。...本例,子视图 body 值中一定会包含用于显示图片数据,因此,即使视图已经被显示过( 滚动出显示区域 ),视图 body 值仍将占用不小内存。...我们可以通过 onAppear 以及 onDisappear 对图片显示与否( 变量 show )进行控制( 迫使 SwiftUI 对视图 body 重新求值 ),从而减少因上述原因所增加内存占用...数据多份拷贝 当图片数据从 SQLite 经 Core Data 最终通过 SwiftUI 显示时,实际上在内存至少保存了三份拷贝: 行缓存 托管对象上下文( 托管对象被填充后 ) 显示图片 SwiftUI...在这种情况下,我们可以通过引用类型来创建一个 Holder,通过持有,解决释放不积极问题。

2.4K40

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

我们创建完 100 条数据后,重启应用( 重启可以更精准地测量内存占用情况 )并滚动列表至底部。此时应用内存占用为 1.6 GB 左右。...本例,子视图 body 值中一定会包含用于显示图片数据,因此,即使视图已经被显示过( 滚动出显示区域 ),视图 body 值仍将占用不小内存。...我们可以通过 onAppear 以及 onDisappear 对图片显示与否( 变量 show )进行控制( 迫使 SwiftUI 对视图 body 重新求值 ),从而减少因上述原因所增加内存占用...数据多份拷贝 当图片数据从 SQLite 经 Core Data 最终通过 SwiftUI 显示时,实际上在内存至少保存了三份拷贝: 行缓存 托管对象上下文( 托管对象被填充后 ) 显示图片 SwiftUI...在这种情况下,我们可以通过引用类型来创建一个 Holder,通过持有,解决释放不积极问题。

1.2K10

架构之路 (五) —— VIPER架构模式(一)

开始 首先看下主要内容: 本教程,您将了解如何SwiftUI和Combine中使用VIPER体系结构模式,同时构建一个允许用户创建公路旅行iOS应用程序,来自翻译。...路由Router处理屏幕之间导航。这与SwiftUI不同,SwiftUI,视图显示任何新视图。...本例,主要entity是Trip,包含一个路点Waypoints列表,路点是旅程各个站点。 这个应用程序包含一个DataModel类,包含一个旅行列表。...通过使用@Published属性包装声明,视图将能够监听属性变化并自动更新自身。 下一步是将此列表与来自interactor数据模型同步。...当您将其放置NavigationView时,链接将成为一个按钮,将destination推送到导航堆栈上。 content块可以是任何一个SwiftUI视图。

17.4K10

一些适合 SwiftUI 初学者教程

欢迎大家 Discord 频道[2] 中进行更多地交流经常有朋友咨询,学习 SwiftUI 最佳路径是什么?...SwiftUI 推广也算尽心尽力,史无前例地为 SwiftUI 创建了一个十分 精美的教程[10]( 创建教程技术最终演变为 DocC[11] )。...教程提供了保姆级提示能力,可以为开发者展示开发过程每一个步骤。比较遗憾是,尽管教程制作得十分精良,但调性过于高冷,代入感不强。...正以聊天室、Twitter、博客留言等讨论为灵感,从中选取有代表性问题和技巧制作成 Tips ,发布 Twitter 上。...每周也会对当周博客上新文章以及 Twitter 上发布 Tips 进行汇总,并通过邮件列表形式发送给订阅者。订阅下方 邮件列表[17],可以及时获得每周 Tips 汇总。

1.8K21

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

众所周知,SwiftUI 是一个响应式框架,这意味着,当数据源发生变化时,框架会自动更新视图。同样,当我们想调整视图显示时,应直接对状态进行修改。...原文发表博客 肘子Swift记事本视图变化在前、状态变化在后 SwiftUI ,某些可编程控件执行一定操作时,会先更新视图,待视图变化完成后再修改与其对应状态。...,左上角 Back 按钮将消失,但视图并没有返回根视图图片如果告诉你,上述情况正是由前文提到状态更新滞后所导致,那么你如何避免这个问题呢?...复现条件如下:iOS 16 系统,真机或模拟上测试点击视图列表按钮,可以进入下一级视图。...iOS 17 得以修复,不知道是否和我们 Discord 讨论后给苹果提交 Feedback 有关。

583110
领券