• 本文将讲解如何通过NSCoreDataSpotlightDelegate(WWDC 2021版本)实现将应用程序中的Core Data数据添加到Spotlight索引,方便用户查找并提高App的曝光率。

    基础

    Spotlight

    自2009年登陆iOS以来,经过10多年的发展,Spotlight(聚焦)已经从苹果系统的官方应用搜索变成了一个包罗万象的功能入口,用户对Spotligh的使用率及依赖程度也在不断地提升。

    在Spotlight中展示应用程序中的数据可以显著地提高应用的曝光率。

    Core Spotlight

    从iOS 9开始,苹果推出了Core Spotlight框架,让开发者可以将自己应用的内容...

  • SheetKit是什么

    SheetKit是一个SwiftUI模态视图的扩展库。提供了数个用于模态视图的便捷展示、取消方法,以及几个用于模态视图的View Extension。

    开发SheetKit的主要原因:

    • 便于Deep link的调用

    SwiftUI提供了onOpenURL方法让应用程序可以非常轻松的响应Deep Link。但在实际使用中,情况并不如预期。主要因为SwiftUI中重要的视图展示模式:NavigationView、Sheet等都没有迅捷、简便的重置能力。很难通过一两句代码将应用程序立即设置成我们想要的视图状态。

    • 模态视图的集中管理

    SwiftUI通常采用.sheet来创建模态视图,对于简...

  • 本文中我们将探讨如何实现一个SwiftUI 3.0中新增功能——interactiveDismissDisabled的增强版;如何创建更SwiftUI化的功能扩展。

    需求

    由于健康笔记中数据录入都是在Sheet中进行的,为了防止用户在录入过程中由于误操作(使用手势取消Sheet)丢失数据,因此,从最初的版本开始,我就一直使用各种手段加强对Sheet的控制。

    去年9月,我在文章【在SwiftUI中制作可以控制取消手势的Sheet】中介绍了健康笔记2.0版本的Sheet控制实现方法。目标为:

    • 通过代码控制是否允许手势取消Sheet
    • 在用户使用手势取消Sheet时可以获得通知,进而拥有更多的控制能力

    最终实现的...

  • 本文中,我们将探讨如何使用Core Data with CloudKit创建与多个iCloud用户共享数据的应用。

    本篇是本系列的最后一篇,本文中将涉及大量之前提到的知识,阅读本文前,最好已经阅读过之前的文章

    相信应该有不少的朋友都使用过iOS自带的共享相簿或者共享备忘录功能。这些功能的实现都是基于几年前苹果推出的CloudKit共享数据API。在WWDC 2021中,苹果将该功能集成到Core Data with CloudKit之中,我们终于可以在使用少量CloudKit API的情况下,用Core Data的操作方式创建具有同样功能的应用程序了。

    就像WWDC session Build a...

  • 经过两年多的时间,SwiftUI发展到当前的3.0版本,无论SwiftUI的功能还是Swift语言本身在这段时间里都有了巨大的提升。是时候使用Async/Await来重构我的的状态容器代码了。

    SwiftUI的状态容器

    我是从王巍的SwiftUI与Combine编程一书中,第一次接触到Single souce of truth式的编程思想。整体来说,同Redux的逻辑基本一致:

    • 将App当做状态机,UI是App状态(State)的具体呈现。
    • State(值类型)被保存在一个Store对象当中,为了在视图中注入方便,Store需符合ObservableObject协议,且为State设置@Publish...