- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
所以,它终于发生了。对于任何独立 iPhone 开发者来说,最糟糕的情况都发生了。升级我的应用程序后,一些用户报告完全数据丢失。 iCloud 核心数据同步不工作。我的用户部分地使用这个应用来经营他们的业务。这是一个真正的灾难性失败。
我唯一更改的与 iCloud 相关的是将键值存储添加到 iCloud。核心数据代码保持完全相同,相同模型版本(未迁移)等。
在我的测试中,一切都很顺利!但令我沮丧的是,用户报告说,当他们打开更新后的应用程序时,他们的数据已经不存在了。
这可能是什么原因?
请在下面找到我的托管对象模型和持久存储的代码。如果您需要其他任何东西来评估问题,请告诉我。
- (NSManagedObjectContext *)managedObjectContext {
if (managedObjectContext_ != nil) {
return managedObjectContext_;
}
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if (coordinator != nil) {
managedObjectContext_ = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
[managedObjectContext_ performBlockAndWait:^{
[managedObjectContext_ setPersistentStoreCoordinator:coordinator];
if (useICloud) {
[managedObjectContext_ setMergePolicy:NSMergeByPropertyObjectTrumpMergePolicy];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(mergeiCloud:)
name:NSPersistentStoreDidImportUbiquitousContentChangesNotification
object:coordinator];
}
}];
}
return managedObjectContext_;
}
和
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
if (persistentStoreCoordinator_ != nil) {
return persistentStoreCoordinator_;
}
NSMutableDictionary *options = [NSMutableDictionary dictionary];
NSURL *storeURL = [[self applicationDocumentsDirectory]
URLByAppendingPathComponent:@"SalesCalls.sqlite"];
[options setObject:[NSNumber numberWithBool:YES]
forKey:NSMigratePersistentStoresAutomaticallyOption];
[options setObject:[NSNumber numberWithBool:YES]
forKey:NSInferMappingModelAutomaticallyOption];
if (useICloud) { // this is an internal flag set to YES
NSURL *iCloudURL = [[NSFileManager defaultManager]
URLForUbiquityContainerIdentifier:nil];
if (nil!=iCloudURL) {
NSString *cloudData = [[iCloudURL path]
stringByAppendingPathComponent:@"data"];
iCloudURL = [NSURL fileURLWithPath:cloudData];
[options setObject:@"at.topofmind.salesplus.store"
forKey:NSPersistentStoreUbiquitousContentNameKey];
[options setObject:iCloudURL
forKey:NSPersistentStoreUbiquitousContentURLKey];
NSURL *nosyncDir = [iCloudURL
URLByAppendingPathComponent:@"data.nosync"];
[[NSFileManager defaultManager] createDirectoryAtURL:nosyncDir
withIntermediateDirectories:YES
attributes:nil error:nil];
storeURL = [nosyncDir
URLByAppendingPathComponent:@"SalesCalls.sqlite"];
}
}
NSError *error = nil;
persistentStoreCoordinator_ = [[NSPersistentStoreCoordinator alloc]
initWithManagedObjectModel:[self managedObjectModel]];
if (![persistentStoreCoordinator_
addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil URL:storeURL options:options error:&error])
{
NSLog(@"Cannot create persistent store coordinator, %@, %@",
error, [error userInfo]);
abort();
}
return persistentStoreCoordinator_;
}
欢迎评论、意见、大胆猜测等(当然还有解决方案!)。
更新:
我的一位客户丢失了所有数据,在重新安装和重置所有内容(重启设备等)后,他无法再与 iCloud 同步。该符号根本不会显示在设置中。
最佳答案
我遇到了类似的东西,但用途很少(根据你的描述,我假设你的音量比我大,这可能是几个案例的原因)
在我的案例中,Apple 似乎在没有提前通知的情况下删除了 icloud 中的 20gb 可用空间。我注意到这 2 位使用数据量大的用户丢失了我的应用程序中的新数据(用于处理历史股票定价),而其他用户我们可以下载相同的数据大小。
我跟进了那两个,帮助他们清理东西以在 icloud 和 voila 中腾出更多空间,再次下载数据后它工作正常。
关于iphone - 更多 iCloud 核心数据同步问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14478517/
我是 icloud 新手。我正在开发一个应用程序。在我的应用程序中,我想将图片备份到 iCloud 服务器。但我不想将这些图像传回我的 iPhone。 这可能吗?怎么可能呢。我是 iCloud 新手。
我对 iCloud 很陌生——我制作了一个容器,然后在其中创建了一个记录类型。然后部署到生产。 好吧,我不再想要这种记录类型,所以我尝试删除它。 Invalid attempt to delete a
我已经在 icloud 中复制了我的 sqlite 数据库,我想使用该 icloud sqlite 数据库作为插入/更新和删除。我为它编写了代码,但它在其他设备上不起作用(我有 2 个设备)。意味着当
当本地商店更改为 iCloud 商店时,我正在尝试接收消息。 这是一个关键事件。所以我的用例是一个新设备在从一个空的商店开始后接收 iCloud 商店。我想通知 View 更新接收到的内容。 我像这样
我试图让 iCloud 中的键值存储正常工作,但我遇到了一个奇怪的问题。 我使用以下方式存储数据: [[NSUbiquitousKeyValueStore defaultStore] setObjec
我遇到了有关 iCloud 同步过程的问题。 当用户决定激活 iCloud 时,本地存储在应用程序沙箱中的文档将移动到本地 iCloud 目录,然后删除沙箱中的文件。这是通过 setUbiquitou
我对 iCloud 的想法有点纠结,并发布了一个更一般的问题 here .我最大的问题是决定是否应该停止将用户数据放在应用程序沙箱中的旧文档文件夹中。为了说明我的问题: docs据我所知,不要给出答案
嗨,我开发了一个 iPhone 应用程序,我将 NSMutableArray 存储到 NSUserDefaults 中。但是现在我想将相同的 NSMutableArray/NSUserDefaults
有没有办法访问特定的 PHAsset在多个设备上唯一的 iCloud 相册中? 我编写了一个简单的应用程序,其中列出了缩略图和 .localIdentifier s 来自 iCloud 共享相册,并且
我正在尝试将应用程序转移到另一个 Apple ID。当我这样做时,我收到一条错误消息,指出该应用程序无法传输,因为该应用程序启用了 iCloud。 由于这不是故意的,我尝试禁用 iCloud 并向应用
我的 iPhone 应用程序的文档文件夹与文件应用程序上的 iCloud 位置存在问题。我的应用程序的文档文件夹出现在文件应用程序的设备端,但没有出现在文件应用程序的 iCloud 位置。iCloud
我一直在为客户运行一个流程,该流程涉及通过在 ruby 脚本中进行 https GET 调用,从 me.com 获取他们公开可用的日历文件,然后将 .ics 文件中的数据转换为 html,然后将其
我在 App Store 中有一个简单的应用程序,它是 UITableView由用户填写一些 UITextField 填充s 在模态调用的 View 中。用户按下保存,所有内容都保存到 Core Da
我有点困惑。每次用户单击“备份”时,我都使用 iCloud Drive 存储内部数据的备份。这不像我想的那样工作,因为有时它只是不会在设备和单击恢复的用户之间同步得到他们的旧备份。 现在我已经阅读了有
我有一个 iOS 应用程序,其中一半用户希望使用 iCloud 在设备之间同步一些数据,而另一半则不需要。出于这个原因,我将核心数据(启用 iCloud)的 sqlite 文件放在应用程序文档目录中。
我正在为 friend 的企业构建一个 i0S 8 iPad 应用程序,以帮助他和他的员工在设备之间同步评估数据。换句话说,如果一名员工创建了评估,则运行该应用程序的所有其他员工都应该可以访问该评估。
我正在创建一个应用程序(目前仅适用于 iPhone),它需要一种自动备份数据的方法,并让用户能够从不同的设备访问他们的数据。数据可能会在一段时间后达到一致的大小,因为它还将包括照片等。 我目前正在考虑
我非常接近在我的应用程序中完成 iCloud 和核心数据的实现。这是一款仅限 iOS 7 的应用程序。 我在应用程序中为用户提供一个选项,以 UISwitch 的形式说出打开或关闭 iCloud。该应
我正在开发一个使用核心数据的应用程序,因为我认为我可以使用核心数据为 iCloud 提供的同步功能在 iPad 和 iPhone 之间同步数据,现在它已被弃用。 我遇到了 CloudKit,但它主要用
应用程序在 iCloud 中存储数据似乎有几种不同的方式(iCloud Drive 文档、带 iCloud 同步的核心数据、CloudKit 私有(private)数据库、键值对等),但我不确定是否仅
我是一名优秀的程序员,十分优秀!