标签: cloudkit

将文本段落(包括换行符)存储在云套件中并进行查询

我还有一个新手问题。希望你们中的一位编程大师可以帮助我。

我正在尝试从 CloudKit 获取多段文本(例如新闻文章)。我不知道如何设置文本格式以使其包含换行符。有人告诉我应该在 CloudKit 记录上使用 CKAsset 而不是 String,但我不明白它应该如何格式化。

谁能帮助我更多地理解这一点?

提前致谢。

ios swift cloudkit

1
推荐指数
1
解决办法
325
查看次数

清除/清理 CloudKit 容器的所有用户 iCloud 记录

我们创建了一个 iOS 应用程序,它保存到 CoreData,然后同步到 CloudKit。在测试中,我们尚未找到从应用程序 iCloud 容器中清除数据的方法(对于用户私有数据)。只能从我们知道的那里删除。如果我们遇到同步问题并且某些内容“卡在 iCloud 中”,我们不知道如何清除以干净地重新启动。关于如何彻底清理 iCloud 的任何想法。
更新信息:CloudKit 私有数据库。没有区域。清除应用程序的所有数据,以全新开始。应用程序的用户将拥有此控制权。预期结果:从应用程序中,用户可以快速删除他们保存的所有用户数据。我可能没有问正确的问题或遗漏了一些东西 - 感谢任何指导。

swift cloudkit

1
推荐指数
1
解决办法
2225
查看次数

具有同步功能的离线和在线 iOS 应用程序的存储选项

让我们考虑这个示例用例,一个用于食谱的 iOS 应用程序:

  • 公共数据(由所有用户共享,只读,按需下载):当用户第一次打开应用程序时,他会发现一个浅列表(未完全下载)10个菜谱(从远程服务器获取),可以选择下载完整菜谱和然后他可以打开菜谱的详细信息屏幕。在任何时候,列表都可以增长,用户应该始终拥有最新的数据(从远程获取并保持同步)。这些数据应该可以离线使用,并且应该在在线时提取新内容。(只读)

  • 私有数据(特定于用户):用户可以创建本地存储并远程同步的自定义配方。该数据应该可以离线使用,并且应该在在线时同步(读取和写入)

  • 数据应在所有 iOS 设备中同步

我正在考虑使用 Core Data(离线)和 CloudKit(远程)。但我不确定这是否可以处理上述场景或者是否有任何限制。您认为 Core Data(离线)和 CloudKit 是最佳选择吗?有什么限制吗?你还有什么推荐的选择

synchronization core-data ios swift cloudkit

1
推荐指数
1
解决办法
2436
查看次数

即使添加映射模型后,CoreData 轻量级迁移也会崩溃

在我的 CoreData 模型中,我创建了一个抽象实体 ( IDManagedObject) 来共享其他实体的公共属性。

当我第一次运行它时,我遇到了几个Cannot merge multiple root entity source tables into one destination entity root table错误。

完整错误如下:

Fatal error: Unresolved error Error Domain=NSCocoaErrorDomain Code=134110 "An error occurred during persistent store migration." UserInfo={sourceURL=file:///Users/koen/Library/Developer/CoreSimulator/Devices/8E2C0F01-ABF3-4414-A01A-EE4FFEF8D187/data/Containers/Data/Application/B7A9A4EE-EB57-434F-B1A9-576DCD80CFBD/Library/Application%20Support/MyApp.sqlite, reason=Cannot migrate store in-place: Cannot merge multiple root entity source tables into one destination entity root table, destinationURL=file:///Users/koen/Library/Developer/CoreSimulator/Devices/8E2C0F01-ABF3-4414-A01A-EE4FFEF8D187/data/Containers/Data/Application/B7A9A4EE-EB57-434F-B1A9-576DCD80CFBD/Library/Application%20Support/MyApp.sqlite, NSUnderlyingError=0x6000019fb810 {Error Domain=NSCocoaErrorDomain Code=134110 "An error occurred during persistent store migration." UserInfo={message=Cannot merge multiple root entity source tables into one destination entity root table, …
Run Code Online (Sandbox Code Playgroud)

core-data ios mapping-model cloudkit

1
推荐指数
1
解决办法
940
查看次数

如何使用 SwiftUI MVVM 正确保存 CoreData 中的项目?

我正在努力在我的项目中实现 CoreData/Cloudkit。它是使用 MVVM 架构在 SwiftUI 中构建的。我陷入了在 Apple 提供的 Xcode 模板中向 CoreData 保存/添加某些内容的部分,这是在 ContentView 文件中完成的,但是对我来说,这感觉像是应该在 ViewModel 中完成的事情。那是对的吗?

对于其他上下文,我的项目是一个简单的游戏,分数是在 viewModel 中计算的。然后分数立即通过 ContentView 显示给用户。我还希望能够将分数保存到 Leaderboard CoreData 对象中。由于大部分与分数相关的工作都是在 viewModel 中完成的,因此对我来说,在其中而不是在视图中处理保存是最有意义的。

模板通过以下代码进行保存

let newItem = Item(context: viewContext)
            newItem.timestamp = Date()

            do {
                try viewContext.save()
Run Code Online (Sandbox Code Playgroud)

哪里viewContext@Environment(\.managedObjectContext) private var viewContext

我将如何在 ViewModel 中执行此操作,因为我相信@Enviroment这是针对 SwiftUI 的。

core-data swift cloudkit swiftui

1
推荐指数
1
解决办法
2478
查看次数

Mac OSX应用程序可以不在Mac App Store上访问CloudKit吗?

进入Mac App Store是访问iCloud的要求。

同样适用于访问CloudKit吗?

该方案是让Mac OSX应用程序通过CloudKit与iOS对方共享数据。

根据本文-http://9to5mac.com/2014/06/05/icloud-drive-enables-non-mac-app-store-apps-to-use-icloud-document-storage/-您不会但我正在寻求任何实际设法做到的开发者的确认。

cloudkit

0
推荐指数
2
解决办法
1416
查看次数

播放通过 CloudKit 下载的视频作为 CKAsset - iOS

我正在制作一个录制视频的应用程序,使用带有 CKAsset 的 CloudKit 将其上传到 iCloud,然后下载文件并在 AVPlayer 中播放。这都是用 Swift 2.0 编写的

我已经下载了数据,我想我已经能够参考它,但我不确定。当我将 URL 转换为 NSData 对象并将其打印到控制台时,数据/垃圾确实会打印。然而,视频文件作为二进制文件下载。我能够转到 CloudKit 仪表板并下载文件并将“.mov”附加到它,并且它在 Quicktime 中打开没问题。

所以我认为我的主要问题是我无法弄清楚如何让视频文件实际播放,因为该文件没有扩展名。我曾尝试使用 URLByAppendingPathExtension() 将 '.mov' 附加到末尾,但无济于事。让我知道任何想法!

上传视频

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
    let tempURL = info[UIImagePickerControllerMediaURL] as! NSURL

    dismissViewControllerAnimated(true) { () -> Void in
        self.uploadVideoToiCloud(tempURL)
        print("\n     Before Upload: \(tempURL)\n")
    }
}

func uploadVideoToiCloud(url: NSURL) {
    let videoRecord = CKRecord(recordType: "video", recordID: id)

    videoRecord["title"] = "This is the title"

    let videoAsset = CKAsset(fileURL: url)
    videoRecord["video"] = videoAsset

    CKContainer.defaultContainer().privateCloudDatabase.saveRecord(videoRecord) …
Run Code Online (Sandbox Code Playgroud)

ios avplayer icloud swift cloudkit

0
推荐指数
1
解决办法
2181
查看次数

如何使用 CloudKit (swift) 保存和加载数字(整数)

我正在创建一个应用程序,需要在应用程序退出时将计数器变量(这是一个整数)保存到云中,然后在应用程序变为活动状态时加载计数器。我以前从未使用过 CloudKit,有人可以简化我如何使用 swift 做到这一点吗?我尝试复制的许多示例对于我想要实现的目标来说都过于复杂。

注意:在有人提到它之前,我知道还有其他方法可以实现此目的,但我想使用 CloudKit 来实现。

另外,我已经了解 appDelegate 转换是如何工作的,所以我不需要帮助:)

int integer swift cloudkit

0
推荐指数
1
解决办法
1132
查看次数

iCloud/CloudKit用户的唯一标识符

是否有更好的解决方案(以下可能的解决方法)为iCloud/CloudKit用户获取UUID?
因此,可以检测用户是否已使用相同的iCloud帐户执行某项操作(在其他设备上).

可能的解决方法:

  • 创建UUID并将其存储在专用数据库中
    • 缺点:使用额外的数据库请求

cocoa cocoa-touch icloud cloudkit

0
推荐指数
1
解决办法
492
查看次数

无法分配“字符串”类型的值?输入“CKRecordValue”

随着最新测试版中的 Swift 更新,这不再有效,我很难过。我可能需要添加其他的东西,我试图改变letvar并加入!recordType["username"]password。我是新手,所以任何方向都将不胜感激!

import UIKit
import CloudKit

class LoginViewController: UIViewController {

    @IBOutlet weak var username: UITextField!
    @IBOutlet weak var password: UITextField!

    let publicDatabase = CKContainer.default().publicCloudDatabase

    override func viewDidLoad(){
        super.viewDidLoad()
    }

    @IBAction func LoginTapped(sender: AnyObject){

        var recordType = CKRecord(recordType: "Login")

        recordType["username"] = username.text <-Cannot assign value
        recordType["password"] = password.text <-Cannot assign value

        publicDatabase.save(recordType) {
            (record, error) in

            if error == nil {       
                print("Created Successfully")
            }

            else {           
                print(error?.localizedDescription)
            }
        }
    } …
Run Code Online (Sandbox Code Playgroud)

swift cloudkit swift3

0
推荐指数
1
解决办法
967
查看次数

无法将 ZoneConfiguration 转换为 ZoneOptions

由于ZoneOptions已弃用,我将optionsByRecordZoneID变量更改ZoneConfiguration为如下

   var optionsByRecordZoneID = [CKRecordZone.ID: CKFetchRecordZoneChangesOperation.ZoneConfiguration]()

   for zoneID in zoneIDs {
            let options = CKFetchRecordZoneChangesOperation.ZoneConfiguration()
            options.previousServerChangeToken = settings.getChangeToken(forKey: databaseTokenKey)
            optionsByRecordZoneID[zoneID] = options
        }
Run Code Online (Sandbox Code Playgroud)

现在,对于这行optionsByRecordZoneID变量,我收到以下错误,

let fetchRecordZoneChangesOperation = CKFetchRecordZoneChangesOperation(recordZoneIDs: zoneIDs, optionsByRecordZoneID: optionsByRecordZoneID)
Run Code Online (Sandbox Code Playgroud)

无法将类型“[CKRecordZone.ID:CKFetchRecordZoneChangesOperation.ZoneConfiguration]”的值转换为预期的参数类型“[CKRecordZone.ID:CKFetchRecordZoneChangesOperation.ZoneOptions]?”

任何有关摆脱它的帮助将不胜感激。

ios swift cloudkit

0
推荐指数
1
解决办法
170
查看次数

按记录名称获取多条记录

我有一组记录名称(或字符串)。我想获取公共数据库中具有任何这些记录名称的任何记录。我该怎么做?

database ios swift cloudkit ckrecord

-1
推荐指数
1
解决办法
1230
查看次数