我已实现NSPersistentCloudKitContainer将我的数据同步到CloudKit,我想知道同步已完成并且没有其他待同步的更改。
当我尝试重新安装该应用程序时,我开始从 CloudKit 取回我的数据并开始在控制台中打印某些日志。从 CloudKit 取回所有数据大约需要 30 秒。一些日志提到了NSCloudKitMirroringDelegate. 看起来NSCloudKitMirroringDelegate知道剩余的同步请求,但我找不到任何关于确保同步完成的信息。
这里有一些日志确实表明 NSCloudKitMirroringDelegate 知道同步何时完成。
CoreData: CloudKit: CoreData+CloudKit: -NSCloudKitMirroringDelegate checkAndExecuteNextRequest::检查待处理的请求。
CoreData: CloudKit: CoreData+CloudKit: -[NSCloudKitMirroringDelegate _enqueueRequest:]_block_invoke(714): : 入队请求: A2BB21B3-BD1B-4500-865C-6C848D67081D
CoreData:CloudKit:CoreData+CloudKit:-[NSCloudKitMirroringDelegate checkAndExecuteNextRequest]_block_invoke(2085)::推迟额外的工作。还有一个活动请求:A3E1D4A4-2BDE-4E6A-8DB4-54C96BA0579E
CoreData: CloudKit: CoreData+CloudKit: -[NSCloudKitMirroringDelegate checkAndExecuteNextRequest]_block_invoke(2092): :没有更多的请求要执行。
有什么办法可以知道数据完全同步了吗?我需要向用户显示某些 UI。
我正在尝试在我的 CoreData+CloudKit 项目中执行历史跟踪,该项目使用NSPersistentCloudKitContainer. 我一直在关注 Apple 的示例项目
我想在远程存储更新后执行某些任务。为此,苹果建议在应用程序的签名和功能的后台模式部分启用远程通知。
我已经为我的项目启用了历史跟踪,如 Apple 的示例项目所示。
// turn on persistent history tracking
let description = container.persistentStoreDescriptions.first
description?.setOption(true as NSNumber,
forKey: NSPersistentHistoryTrackingKey)
// ...
Run Code Online (Sandbox Code Playgroud)
我还注册了我的商店来监听商店的变化。
// turn on remote change notifications
let remoteChangeKey = "NSPersistentStoreRemoteChangeNotificationOptionKey"
description?.setOption(true as NSNumber,
forKey: remoteChangeKey)
// ...
Run Code Online (Sandbox Code Playgroud)
还添加了观察者来侦听NSPersistentStoreRemoteChangeNotification.
然而,没有NSPersistentStoreRemoteChangeNotification被解雇。为了确保我的实现没有错误,我只是在@objc func storeRemoteChange(_ notification: Notification)Apple 提供的示例代码中放置了断点,但我仍然看不到任何通知被触发并且没有断点被激活。
我已经了解示例项目中完成的标签重复数据删除,也尝试对其进行测试,但没有任何成功。这是 Apple 实现中的错误还是我缺少任何必需的设置?
我正在使用UICollectionViewDiffableDataSourceforUICollectionView在多个部分中显示内容。
我正在使用在 WWDC'19 上引入的Collection View Compositional Layout 和 Diffable Datasources链接来呈现的多节布局UICollectionView
我有一个简单的设置,每个部分的页眉显示该部分中的项目数,页脚显示该部分所有项目的摘要。
section 1 Header --> January 2020 - 5 Trips
section 1 item 1 --> Trip 1
section 1 item 2 --> Trip 2
section 1 item 3 --> Trip 3
section 1 item 4 --> Trip 4
section 1 item 5 --> 行程 5
现在如果行程被删除,DiffableDataSource 会通过动画更新更改,但不会重新加载各部分的标题。这看起来不一致。例如,如果行程 4 被删除,则标题仍显示该部分中有 5 个行程。我怎样才能用 DiffableDataSource 重新加载标头?
对于临时修复,我只是collectionView.reloadData()在显示 Diffing 动画的延迟后调用
,然后我硬重新加载数据,这也强制重新加载标头。
private func configureTripDataSource(){
tripDataSource …Run Code Online (Sandbox Code Playgroud) ios uicollectionview uicollectionviewlayout swift diffabledatasource
在我的初始视图控制器中,我有一个UITabbarController作为子视图控制器。
我想必须使用具有 Compact 的水平尺寸类的 traitCollectionUITabbarController显示它UITabbar,以便在选项卡栏中,图像和标题显示为垂直对齐而不是并排。
iOS13 现在不支持覆盖 UITabbarController 的 traitCollection getter,Xcode 给出以下警告。
override var traitCollection: UITraitCollection{
let current = super.traitCollection
let compact = UITraitCollection(horizontalSizeClass: .compact)
return UITraitCollection(traitsFrom: [current, compact])
}
Run Code Online (Sandbox Code Playgroud)
MyTabbarController 类覆盖了不支持的 -traitCollection getter。如果您尝试覆盖特征,则必须使用适当的 API。
在研究了合适的 API 后,我发现
open func setOverrideTraitCollection(_ collection: UITraitCollection?, forChild childViewController: UIViewController)
Run Code Online (Sandbox Code Playgroud)
实现这个之后,我可以覆盖 myTabbarController 的特征集合,但只有在视图改变方向之后。此 API 仅在我将 viewWillTransition 覆盖为方法时才有效。
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size, with: coordinator)
let currentTC = traitCollection
let compactTC = UITraitCollection(horizontalSizeClass: …Run Code Online (Sandbox Code Playgroud) 我正在开发基于地图的 iOS 11 应用程序,并希望使状态栏变得完全像 Apple 地图中显示的那样模糊。
目前,我正在使用 UIVisualEffectView 来复制这种效果。这是我的代码:
let blurEffect = UIBlurEffect(style: .regular)
blurredStatusBar = UIVisualEffectView(effect: blurEffect)
blurredStatusBar?.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(blurredStatusBar!)
Run Code Online (Sandbox Code Playgroud)
但是,无论我使用什么 UIBlurEffect,我都无法像 Maps 应用程序那样复制效果。以下是它如何寻找不同的效果:
我只想模糊状态栏,而不添加任何饱和度、活力或任何白色色调。
有一个实例属性 - backgroundFilters,它可能对我有帮助,但不幸的是它不适用于 iOS 上的图层。
这里建议的一种可能的解决方案是捕获图像内的 UIView 内容,然后模糊并显示它。但是,在我的情况下,这不是一个可行的解决方案,因为我在状态栏下方有一张可以平移的地图。在平移地图时将下方地图连续捕获为图像并对其进行模糊处理是没有意义的。
我尝试使用ILTranslucentView,它是 UIView 的一个小子类,提供原生 iOS 7+ 模糊(半透明)效果。它是这样出现的:
我尝试了不同的方法,如这个,但没有用。
我有一个UITabBar必须有一个具有紧凑水平尺寸类的 traitCollection。因为在常规的 horizontalSizeClass 上,UITabBar并排呈现 TabBarIcon 和 Title。
我做了子类UITabBar并覆盖了 traitCollection getter 来给我修改后的 traitCollection。
override var traitCollection: UITraitCollection{
let current = super.traitCollection
let compact = UITraitCollection(horizontalSizeClass: .compact)
return UITraitCollection(traitsFrom: [current, compact])
}
Run Code Online (Sandbox Code Playgroud)
这可以完成工作,但是,我开始低于警告
MyTabBar 类覆盖了不支持的 -traitCollection getter。如果您尝试覆盖特征,则必须使用适当的 API。
在查看 Apple 文档后,我确实找到了一个 API,overrideTraitCollection(forChild:) 但是保存我的 UITabBar 的 viewController 需要有常规的 horizontalSizeClass。
我也发现了一个类似的问题,但它没有回答我覆盖 a 的 traitCollection 的问题UIView。
我不希望覆盖的的traitCollectionUIViewController但只有UIView。
覆盖 a 的 traitCollection 的正确方法是UIView什么?
在我的应用程序中,我想stylistic alternate font 用于 'a' 而不是system font.
附件screenshot解释了字体的不同呈现。
我怎样才能启用这种行为UILabel,UITextView以便它呈现正确的一层'a'?
我确实找到了一个YouTube video 链接,它完全解释了这一点,但他正在使用 acustom font并且它是硬编码的。我只想使用system font但与这个替代字符。
我也许可以硬编码UILabel与custom character,我不知道,因为我想用System font。我不想使用custom Font. 什么UITextView是编辑?我们如何让它a在用户输入时使用替代?
ios ×5
swift ×5
cloudkit ×2
core-data ×2
ios13 ×2
nspersistentcloudkitcontainer ×2
gaussianblur ×1
typography ×1
uiblureffect ×1
uifont ×1
uitabbar ×1