我只想获取 CloudKit 音乐记录中的 Song_Name 字段。我正在尝试下面的代码,但它仍然获取音乐记录中的所有字段。我想我需要使用 publicDB.add(operation) 方法编译操作,但它不允许我像现在使用 publicDB.perform(query, in....) 那样声明“results”
let predicate = NSPredicate(value: true)
let query = CKQuery(recordType: "Musics", predicate: predicate)
let operation = CKQueryOperation(query: query)
operation.desiredKeys = ["Song_Name"]
publicDB.perform(query, inZoneWith: nil) { [unowned self] results, error in
guard error == nil else {
DispatchQueue.main.async {
self.delegate?.errorUpdating(error! as NSError)
print("Cloud Query Error - Refresh: \(error)")
}
return
}
self.items_music.removeAll(keepingCapacity: true)
for record in results! {
let music = Musics(record: record, database: self.publicDB)
self.items_music.append(music)
}
DispatchQueue.main.async {
self.delegate?.modelUpdated()
}
} …Run Code Online (Sandbox Code Playgroud) 我正在使用Xcode 8和CloudKit创建一个iOS 10应用程序.当应用程序加载时,有没有办法读取自上次应用程序运行以来发送的所有推送通知?
在 CloudKit 中订阅公共数据库的最佳方式是什么?我有一个人的桌子。每个人都包含一个名字和一个位置。一旦位置发生变化,该位置就会在 CloudKit 中更新。那部分工作正常。
但是我无法在记录更新时获得通知。
一些例子会非常有帮助,因为我已经研究了可能的选项。我查看了在数据库中保存订阅的选项以及 CKModifySubscriptionsOperation 选项。
目前,我的订阅代码如下所示:
let predicate = NSPredicate(format: "TRUEPREDICATE")
let newSubscription = CKQuerySubscription(recordType: "Person", predicate: predicate, options: [.firesOnRecordCreation, .firesOnRecordDeletion, .firesOnRecordUpdate])
let info = CKSubscription.NotificationInfo()
info.shouldSendContentAvailable = true
newSubscription.notificationInfo = info
database.save(newSubscription, completionHandler: {
(subscription, error) in
if error != nil {
print("Error Creating Subscription")
print(error)
} else {
userSettings.set(true, forKey: "subscriptionSaved")
}
})
Run Code Online (Sandbox Code Playgroud)
有人也可以告诉我我的 AppDelegate 应该是什么样子吗?
我已将 didReceiveRemoteNotification 函数添加到我的 AppDelegate。我还调用了 application.registerForRemoteNotifications()。这就是我的 didReceiveRemoteNotification 函数的样子:我什至没有打印出来。
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: …Run Code Online (Sandbox Code Playgroud) 我有以下代码将 UICloudSharingController 导入 swift UI,但是当第一次集成时,它只显示一个永不停止的活动指示器,然后第二次显示它(通过 .sheet),没有活动指示器。第一次我可以看到带有活动指示器的右上角的关闭按钮。对于任何反馈,我们都表示感谢。
struct CloudSharingController: UIViewControllerRepresentable {
typealias UIViewControllerType = UICloudSharingController
func makeCoordinator() -> Coordinator {
Coordinator(self)
}
class Coordinator: NSObject, UICloudSharingControllerDelegate {
func cloudSharingController(_ csc: UICloudSharingController, failedToSaveShareWithError error: Error) {
print("asdf")
}
func itemTitle(for csc: UICloudSharingController) -> String? {
return "item title for sharing TTT"
}
var parent: CloudSharingController
init(_ cloudSharingController: CloudSharingController) {
self.parent = cloudSharingController
}
}
var share: CKShare? = nil
var container: CKContainer = CKContainer.default()
var firsTimeBlock: ((UICloudSharingController, @escaping (CKShare?, CKContainer?, Error?) -> …Run Code Online (Sandbox Code Playgroud) 我正在开发一个用于NSPersistentCloudKitContainer在设备之间共享数据的应用程序。核心数据模型有多个实体,其中两个实体通过与其各自逆的关系连接。我遇到的问题是,当我设置与nil云数据的关系时未更新,并且当我重新启动应用程序时,该关系会重置回设置为nil.
这是新版本中的错误NSPersistentCloudKitContainer吗?还有其他人有这个问题吗?
寻找 react-native 库或开发方法来存档以下内容:
在我的本机应用程序中,我想将图片(由用户拍摄)和其他文件(如用户数据库“realm.db(来自 realmjs)”)与用户 iCloud 驱动器同步。
我是否需要使用 cloudkitjs 将所有文件上传到网络,或者是否可以将文件放入特定的应用程序目录中,并且每次用户更新 iphone 设备时 -> 应用程序都会自动同步?
非常感谢让我朝着正确方向前进的任何帮助。
我向 App Store 提交了一个 iOS 应用程序,该应用程序完全按照此处的描述实现了 CloudKit+CoreData:https ://www.andrewcbancroft.com/blog/ios-development/data-persistence/getting-started-with-nspersistentcloudkitcontainer/
在我的设备上,我的应用程序是直接从 Xcode 下载的,并且同步继续完美运行。
但是,在从 App Store 下载应用程序的用户设备上,同步运行了几天,然后突然停止。现在就好像我的用户的两个设备都只切换到本地存储。对一个所做的更改再也不会在另一个上看到了。所有设备从一开始就登录了 iCloud,并且设置没有改变。Signing 和 Capabilities 下的所有信息在 Debug 和 Release 中都是相同的。
这可能是苹果方面的错误吗?我在持久容器的实现中遗漏了什么,或者我需要在 Xcode 中更改什么?
我正在开发一个在本地存储用户数据的应用程序。我已经使用Room数据库将用户创建的数据存储在 Android 设备中。现在,如果用户拥有不止一台设备,那么数据应该可以在他们的所有 (Android) 设备上使用,而无需任何中央数据库或 Web 服务。
注意:对于 iOS 端,我曾经CloudKit在 iOS 设备之间同步数据。有没有办法对 Android 设备做同样的事情?请注意,我不想将数据存储在任何中央数据库或网络服务器或任何中央云存储上。它应该只归用户所有。(即它应该通过用户的谷歌帐户同步)。
注意:我想要一个原生的 android 解决方案,不需要跨平台(Android 到 iOS)同步。
更新:到目前为止,我发现了一些选项,如Firestore和实时数据库,一些 AWS 服务也提供同步工具,但所有这些的问题在于它们都将用户数据存储在中央云位置。
所以我的问题仍然是一样的 - 有没有办法在使用Google Drive或类似的东西的android 设备之间同步数据,我们可以利用用户自己的云存储,而不是将用户数据存储在中央数据库中。
我有一个用于NSPersistentCloudKitContainer与 iCloud 同步数据的应用程序。用户报告偶尔数据丢失,之后我开始调试我的实现。
我的应用程序实现的一部分是显示一个弹出窗口,其中显示信息并有一个确认按钮。当用户单击此按钮时,自定义NSManagedObject子类的一个或多个实例将被修改。
同时,NSPersistentCloudKitContainer在应用程序退出并激活时触发镜像过程。当用户单击上述确认按钮时会发生这种情况。它通过执行NSCloudKitMirroringExportRequest和NSCloudKitMirroringImportRequest请求来做到这一点。
换句话说,在我的应用程序中,数据同时被修改(通过代码显式)和镜像(通过 CloudKit 隐式),这就是出错的地方。
本质上是这样的:
NSTimeInterval实例的属性 ( )NSManagedObject增加(例如 0 + 1 = 1)。NSPersistentCloudKitContainer 当应用程序激活或退出时隐式开始镜像数据。在这个阶段,我希望属性的值与最新的(本地)更改相匹配(因此在我的示例 2 中)。但相反,它匹配初始增量(因此在我的示例 1 中),覆盖我最新的(本地)更改导致数据丢失。显然,NSCloudKitMirroringImportRequest恢复到镜像进程启动时的状态,这也可以在日志中看到:
CoreData: debug: CoreData+CloudKit: -[PFCloudKitImporterZoneChangedWorkItem applyAccumulatedChanges:error:]
[…]
Importing updated records:
(
"<CKRecord: 0x10225b560; recordID=5458F9C8-7BE2-4563-92DE-650ED4C643F5:(com.apple.coredata.cloudkit.zone:__defaultOwner__), recordChangeTag=23, values={\n \"CD_activity\" = \"3E497A4C-6467-48F4-B7F4-6F1B2B7BC779\";\n \"CD_date\" = \"2020-04-26 07:28:00 +0000\";\n \"CD_duration\" = \"1\";\n \"CD_entityName\" = Mutation;\n}, recordType=CD_Mutation>"
)
Run Code Online (Sandbox Code Playgroud)
在这个阶段,我不确定这是否是NSPersistentCloudKitContainer …
macos nsmanagedobject swift cloudkit nspersistentcloudkitcontainer
我尝试迁移我的 CoreData-Model(使用 CloudKit),它复制了我存储的所有对象。在 CloudKit 中使用 CoreData 时如何正确迁移?
我在 CloudKit 中使用 CoreData。几天前,我对模型进行了一些更改,因此需要进行迁移。事情是这样的(详情见下文):
我只是在我的模型 ( Model.xcdatamodel) 中进行了更改,没有更改模型的版本并将其安装在我的 iPhone 上进行测试 -> 崩溃并显示消息“无法迁移就地存储:尝试迁移期间违反约束”。
我创建了模型的新版本 ( Model 2.xcdatamodel) 并在那里进行了更改。然后我创建了一个.xcmappingmodel来管理迁移。没有崩溃并且它起作用了,但是......
我的应用程序中的所有条目现在都重复了,这当然不是预期的。
我的原始(源)模型有两个实体 A 和 B。A 和 B 之间存在多对多映射。我做了以下更改。
我只是创建了.xcmappingmodel-file 而没有更改其中的任何内容。对于现有实体 A 和 B,它具有接管先前数据的条目,如下所示:
destination attribute: name
value expression: $source.name
Run Code Online (Sandbox Code Playgroud)
对于现有的映射 AB(实体 B 称为“标签”),它具有:
FUNCTION($manager, "destinationInstancesForEntityMappingNamed:sourceInstances:" , "TagToTag", $source.tags)
与逆关系类似。
我遵循了 Apple 的文档。我的代码看起来像这样(我做了一个CoreDataManager-class):
[...]
lazy …Run Code Online (Sandbox Code Playgroud) cloudkit ×10
ios ×6
swift ×6
core-data ×3
nspersistentcloudkitcontainer ×2
android ×1
android-room ×1
controller ×1
database ×1
field ×1
icloud ×1
ios13 ×1
macos ×1
objective-c ×1
react-native ×1
realm ×1
realm-js ×1
sharing ×1
swiftui ×1