Tag: icloud

从iCloud中删除核心数据失败

我试图使用[NSPersistentStoreCoordinator removeUbiquitousContentAndPersistentStoreAtURL:options:error:]从iCloud中删除核心数据。 但是我得到奇怪的输出: __93+[NSPersistentStoreCoordinator removeUbiquitousContentAndPersistentStoreAtURL:options:error:]_block_invoke(1982): CoreData: Ubiquity: Unable to move content directory to new location: file:///private/var/mobile/Library/Mobile%20Documents/<UBIQUITY_ID>/ New: file:///private/var/mobile/Library/Mobile%20Documents/OldUbiquitousContent-mobile~C9439AD0-1E87-4977-9C68-0674F5E2E93B Error Domain=NSCocoaErrorDomain Code=513 "The operation couldn't be completed. (Cocoa error 513.)" UserInfo=0x181ab790 {NSSourceFilePathErrorKey=/private/var/mobile/Library/Mobile Documents/<UBIQUITY_ID>, NSUserStringVariant=( Move ), NSFilePath=/private/var/mobile/Library/Mobile Documents/<UBIQUITY_ID>, NSDestinationFilePath=/private/var/mobile/Library/Mobile Documents/OldUbiquitousContent-mobile~C9439AD0-1E87-4977-9C68-0674F5E2E93B, NSUnderlyingError=0x181aab50 "The operation couldn't be completed. Operation not permitted"} 这是什么意思? 如何避免它? 我正在开发iCloud禁用/启用function。 详情在这里 更新: NSDictionary *iCloudOptions […]

CloudKit:防止重复logging

我正在通过一个应用程序将数据从外部Web服务转移到私有CloudKit数据库。 该应用程序是一个单用户应用程序,但是我遇到了一个竞争条件,我不知道如何避免。 我的外部数据中的每条logging都有一个唯一的标识符映射到我的CKRecord实例。 一般的应用程序启动stream程是: 获取相关loggingtypes的当前CKRecords。 获取外部logging。 对于每个外部logging,如果在CloudKit中不存在,则通过批量创build(修改操作)创build它。 现在的问题是,如果同时在用户的两台设备上启动这个进程,由于CK和外部提取都是asynchronous的,所以很有可能会得到重复的logging。 我知道我可以使用区域自动提交所有的CKRecord实例,但我不认为这解决了我的问题,因为如果所有这些提取都发生在同一时间,保存并不是真正的问题。 我的问题是: 有没有人知道一种方法来“locking”私人数据库的所有用户的设备写入? 另外,有没有办法强制在任何CKRecord字段唯一性? 或者,有没有办法使用自定义值作为主键,在这种情况下,我可以使用我的外部ID作为CK ID,并允许系统本身防止重复。 我在这里先向您的帮助表示感谢!

照片框架中的图像iCloud同步创build相册

TL; DR – 将使用 [PHAssetCollectionChangeRequest creationRequestForAssetCollectionWithTitle:@"ALBUM_TITLE"]; 相册 [PHAssetCollectionChangeRequest creationRequestForAssetCollectionWithTitle:@"ALBUM_TITLE"]; 通过iCloud同步? 并且同步的图像 在每个设备上都有 相同的 localIdentifier ? 在我的应用程序中,我需要存储用户通过使用相机添加的照片或添加照片库中的现有照片的一些不同的相册/照片文件夹。 理想情况下,我需要的是应用中的所有照片都位于照片应用中的相同(专用于我的应用)相册中,因此此相册可以通过iCloud进行同步,并且对于我可以存储对特定在这张相册中的照片,所以我可以将这些照片分别在我的应用程序中的相册。 我可以为图像创build相册,将图像的localIdentifier存储在数组中,并使用fetchAssetsWithLocalIdentifiers:options:来获取图像。 问题是让这些图像在iCloud上同步。 将使用[PHAssetCollectionChangeRequest creationRequestForAssetCollectionWithTitle:@"ALBUM_TITLE"];创build的相册[PHAssetCollectionChangeRequest creationRequestForAssetCollectionWithTitle:@"ALBUM_TITLE"]; 通过iCloud同步? 据我所知,如果用户没有启用iCloud Photo Library,那么它将不会同步,但它会与iCloud Photo Library同步,这是正确的吗? 如果它将通过iCloud进行同步, localIdentifier中图像的localIdentifier是否相同,还是在下载到新设备时会获得新的标识符? 如果他们确实获得了新的标识符,那么我怎样才能存储对设备上的特定图像的引用? 注意:我现在无法访问支持iCloud的设备来testing

iOS 9 CoreData / ICloud – URL中没有这样的文档

更新2 我也偶尔得到这个错误: CoreData: Ubiquity: Librarian returned a serious error for starting downloads Error Domain=BRCloudDocsErrorDomain Code=6 我想知道它是否相关? 我正在努力提交一个错误报告,但将不胜感激。 UPDATE 当这个错误发生时,我得到了非常奇怪的行为与coredata,它将无法在相同的上下文中find相关的对象。 这是现在绝对削弱我的应用程序 原文问题 我有一个应用程序似乎90%的时间同步CoreData与iCloud Ubiquitous存储的时间。 有时我收到这个错误,事情开始有点疯狂: CoreData: Ubiquity: Librarian returned a serious error for starting downloads Error Domain=BRCloudDocsErrorDomain Code=5 "No document at URL" 我已经search了解如何解决这个问题,但我没有看到任何东西来帮助我已经发布的其他问题。 很多人只是说他们只是放弃了试图解决这个问题。 任何人都可以看到我的核心数据堆栈会导致这个问题? 我觉得我正在服用疯狂的药丸。 // MARK: – Core Data stack lazy var managedObjectModel: NSManagedObjectModel […]

启用iCloud时首次启动iOS应用程序将冻结

我在iOS应用程序中启用了iCloud,当我按下应用程序中的任何视图时,应用程序第一次启动时,应用程序冻结约5秒钟。 我遵循这个教程,在我的应用程序中启用iCloud,并使用核心数据同步数据。 在添加iCloud同步之前,我没有这个问题。 这只发生在第一次启动,而不是其他应用程序的启动。 iCloud同步确实发生。 问题是应用程序冻结。 这是pipe理我的应用程序委托中的同步的代码。 – (NSURL *)applicationDocumentsDirectory { return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; } – (NSPersistentStoreCoordinator *)persistentStoreCoordinator { /*if (persistentStoreCoordinator == nil) { NSURL *storeURL = [NSURL fileURLWithPath:[self dataStorePath]]; persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:self.managedObjectModel]; NSError *error; if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) { NSLog(@"Error adding persistent store %@, %@", error, […]

如何再次提示CKApplicationPermissionUserDiscoverability

有没有办法让iOS在用户拒绝后再次提示CKApplicationPermissionUserDiscoverability? 我所能做的最多的就是删除OS X中的iCloud设置窗格的权限,这个窗口只是在没有任何用户交互的情况下向iOS应用程序返回一个拒绝。 我正在写的应用程序是没有发现性的,所以我希望能够再次提示用户最初说不。

NSURLIsExcludedFromBackupKey在iOS 5.1之前崩溃

像许多iOS开发人员一样,在使用NSURLIsExcludedFromBackupKey之前,我遇到了5.1之前系统崩溃的问题。 在这个线程中很好地描述了如何评估这个键的存在: 在iOS 5.0上使用NSURLIsExcludedFromBackupKey不会崩溃 samvermette的评论之一说,在iOS模拟器中有一个错误。 不过,即使在2个独立的应用程序中,我也遇到了与发布版本相同的问题。 经过一番调查后,我发现应用程序在main()方法被调用之前崩溃了。 这暗示了这是与之相关的 NSString * const NSURLIsExcludedFromBackupKey; 应用程序启动评估。 我不是这个领域的专家,但是我发现,如果在代码中出现任何对const值的引用(即使它在运行时没有被实际访问),这个const在非常应用程序启动时被评估。 这只是导致我们许多人遇到的崩溃。 我想问你一些帮助。 也许你知道如何“微弱地”引用一个常量值,或者是有特定的编译器标志。 (使用Apple LLVM 3.1)。 提前致谢。 在这种情况下请不要直接放置这个const值,即“NSURLIsExcludedFromBackupKey”。 我意识到这个解决方法,对此故事的共鸣是find一个通用的解决scheme。

如何删除iCloud文件?

我正在使用iCloud的UIDocument。 我没有使用CoreData。 删除UIDocument的最佳方法是什么?

检查给定的PHAsset是否是iCloud资产?

我试图获得PhAsset对象。 我想分离iCloud资产。 这是我的代码, PHFetchResult *cloudAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAny options:nil]; [cloudAlbums enumerateObjectsUsingBlock:^(PHAssetCollection *collection, NSUInteger idx, BOOL *stop){ if(collection != nil){ PHFetchResult *result = [PHAsset fetchAssetsInAssetCollection:collection options:fetchOptions]; [result enumerateObjectsUsingBlock:^(PHAsset *asset, NSUInteger idx, BOOL *stop) { // check asset is iCloud asset }]; } }]; 请告诉我如何findPHAsset是iCloud资产?

如何通过修改date对UIDocument的icloud NSMetadataQuery结果进行sorting?

我有一个iOS应用程序,使用简单的UIDocument模型和iCloud存储的单个内容字段。 我检索文件的列表来填充使用NSMetadataQuery的UITableView。 我希望在这个表的顶部显示新的文档,但默认sorting看起来是旧的 – >新的。 我知道如果我在文档中有一个自定义date字段,我可以使用该字段上的NSSortDescriptor对查询进行sorting,但是我的问题是可以通过UIDocument iCloud存储创build的文件的固有修改date进行sorting吗? 还是有另一种首选的方法来做到这一点?