Tag: icloud

iCloud – 如何保存包含自定义对象数组的存档

我已经开发了一个小应用程序,通过归档一组自定义对象在iOS中本地存储,其中包含: @property (nonatomic, copy) NSString *name; @property (nonatomic, copy) NSString *dateCreated; @property (nonatomic, copy) NSString *desc; @property (nonatomic, copy) NSString *url; 我想要使​​用iCloud同步所述档案,我相信推荐的机制是通过一个UIDocument子类。 所有UIDocument的例子我发现使用1个单一的NSString的单个实例,所以我有点困惑如何去同步整个自定义对象的数组,但利用UIDocument(就像我今天通过NSCoding本地做的那样)。 我是否应该创build一个包含上面列出的属性的UIDocument对象数组,是否应该创build一个包含上述数据对象实例的UIDocument实例,然后创build一个包含所有实例的数组,或者应该1个单个UIDocument包含完整的数组自定义对象? 我做了一些研究,但我仍然困惑。 最后,我需要同步只有一个文件,其中包含所述自定义对象的数组。 在此先感谢您的帮助 我今天有一个自定义类,如上所述的4个string称为片段,并在我的根视图控制器我有一个NSMutableArray调用列表,我添加该片段类的每个新的实例。 self.list = [[NSMutableArray alloc] init]; Snippet *newEntry = [[Snippet alloc] init]; [self.list addObject:newEntry]; 我应该创build一个拥有自定义对象数组的UI文档子类吗?

什么是使用iCloud显示集?

当向iOS应用程序添加iCloud支持时,可以configurationiCloud显示集,并通过指定NSUbiquitousDisplaySet将其与应用程序链接。 但是iCloud即使没有它也能正常工作,所以我的问题是:iCloud Display Sets的目的是什么? 在文档的任何地方都找不到明确的答案。 而且,基于苹果文档,如果您使用iCloud,则为您的应用程序指定Display Set似乎是必需的。 那确实让我困惑了一下。 这是一个人可能想要共享多个应用程序或iOS和Mac应用程序版本相同的显示集?

iCloud的无处不在的容器不清理应用程序删除?

我将Core Data的iCloud添加到app store中已经存在的应用中,因此我需要testing升级scheme。 但是,当我从我的设备中删除我的应用程序,并从Xcode重新安装它,我已经注意到,设备上我的无处不在的容器文件夹里面的一切都是持久的! 这是令人难以置信的烦恼,因为当我试图从我指定的事务日志目录中上传文件时,iCloud会变得困惑,并且经常超时。 我最终需要指定一个新的事务日志位置,以使其再次运行,这对我的testing来说显然不会起作用。 以下是我收到的错误: PFUbiquitySafeSaveFile waitForFileToUpload :: CoreData:Ubiquity:(0)permanentLocation :: / private / var / mobile / Library / Mobile Documents / XXXXXXXXXX〜appnamegoeshere / DatabaseTransactionLogs / mobile.8A0C3F8A-4077-57D7-8250-6BE15D1BCD20 / iCloudData / 8u0BfiCwOkHHa〜o8hF4bunW〜 zmdS_C8om5efuugxRaA = / receipt.0.cdt safeLocation :: / private / var / mobile / Library / Mobile Documents / XXXXXXXXXX〜appnamegoeshere / DatabaseTransactionLogs / […]

由于未遵循iOS应用程序数据存储指南,我的应用程序遭到拒绝

我的应用因未遵循iOS应用数据存储指南而被拒绝。 我的二进制文件被苹果App Store审查小组拒绝。 在启动和内容下载时,您的应用程序在用户的iCloud上存储6.34MB,不符合iOS数据存储指南。 下一步 请确认只有用户使用您的应用程序创build的内容(如文档,新文件,编辑等)由iCloud根据iOS数据存储指南的要求进行备份。 此外,请检查您的应用程序使用的任何临时文件只存储在/ tmp目录; 请记住删除或删除存储在这个位置的文件,当它被确定不再需要时。 可以重新创build的数据必须持续保持应用程序正常运行,或者因为用户希望可以离线使用,则应该标记为“不备份”属性。 对于NSURL对象,请添加NSURLIsExcludedFromBackupKey属性以防止备份相应的文件。 对于CFURLRef对象,使用相应的kCRUFLIsExcludedFromBackupKey属性。 我该怎么办?

如何编辑从iOS5中的妈妈加载的NSManagedObjectModel

对于使用CoreData的iOS应用程序,我需要一个模型,其中某些实体属性在iPhone和iPad版本的应用程序之间有所不同。 为了达到这个目的,我使用initWithContentsOfURL:来从位于我的应用程序包中的momd文件加载一个NSManagedObjectModel。 但是,在storeCoordinator实际使用模型之前,我在模型中以编程方式修改了一些实体(基于存储在设备特定的plist中的信息)。 这用于在iOS4上完美地工作。 正如苹果在文件中所述, 被pipe对象模型是可编辑的,直到它们被对象图pipe理器(pipe理对象上下文或持久存储协调器)使用。 这似乎不是在iOS5的情况下(尽pipe文档仍然说明这一点)。 一旦模型创build,使用initWithContentsOfURL:例如,任何尝试修改抛出一个'NSInternalInconsistencyException',原因:'不能修改不可变的模型。 如果在创build之后在debugging器中打印模型对象的描述,它将读取“isEditable 0”,其中在iOS4上运行相同的代码时,其中的相同读数为“isEditable 1”。 在模型上使用“复制”按照Apple的build议创build一个可编辑的副本,也会返回一个带有“isEditable 0”的模型。 我看到两个可能的解释: Bug。 我在openradar上找不到匹配的bugreport,如果需要的话我会提交一个。 iCloud集成。 我还不是很熟悉iCloud API,但是我知道可以设置一些与CoreData的集成。 我想,也许一些自动协调器可以在创build时访问我的模型,使其不可编辑。 我会继续挖掘这些选项,但如果有人有这方面的经验,将不胜感激。

NSUbiquitousKeyValueStore同步问题

我什么也没有,但NSUbiquitousKeyValueStore麻烦,并得到它可靠地跨两个设备同步。 它开始让我发疯。 狂。 我看我的代码打电话给: [[NSUbiquitousKeyValueStore defaultStore] setObject:_someData forKey:@"SomeData"]; [[NSUbiquitousKeyValueStore defaultStore] synchronize]; 但是更多的时候,数据永远不会显示在另一台设备上。 我已经看到它几秒钟内同步,其他时间,我已经等了一个小时,从来没有看到同步。 我将设备插入xcode并开始debugging,有时数据突然popup,有时则不会。 有时候确实如此。 完成这个调用之后,退出并重新启动应用程序,如果我看到了旧数据,而不是我刚刚发布的新数据。 在同一台设备上。 当应用程序启动时,我打电话给: _someData = [[NSUbiquitousKeyValueStore defaultStore] stringForKey:@"SomeData"]; 我假设没有需要运行的init代码。 没有我find的例子。 当它工作,它工作得很好。 那么今天晚上,我正在查看设备日志,并在我最后一次退出(并尝试发送数据)后发现: Jul 8 21:32:03 unknown syncdefaultsd[17296] <Warning>: Error writing storage for com.mycompany.myapp to /private/var/mobile/Applications/4AC8C56E-6060-408B-84F9-F7EC336221D9/Library/SyncedPreferences/com.mycompany.myapp.plist: Error Domain=NSCocoaErrorDomain Code=4 "The operation couldn't be completed. (Cocoa error 4.)" UserInfo=0xde80d40 {NSFilePath=/private/var/mobile/Applications/4AC8C56E-6060-408B-84F9-F7EC336221D9/Library/SyncedPreferences, NSUnderlyingError=0xde80b20"The operation […]

核心数据与iClouddevise

我在iOS 7上,并希望与iCloud使用核心数据,这是行之有效的,我想要的一些input的问题是以下。 我的一些Core Data对象具有相关的图像/大文本文件,我将这些文件作为文件存储在文件系统中,并将这些项目的url设置为string属性。 现在很明显,这不会只与iCloud核心数据同步,因为iCloud没有这些文件的概念。 我想知道你是否对如何处理这个问题有什么build议? 1)我可以将图像数据和大型文本文件直接存储为核心数据属性,但似乎并不是最好的方法 2)我可以使用iCloud来存储文件,然后以某种方式尝试在不同的iOS设备上的文件之间保持同步,但这可能会变得混乱。 3)其他一些解决scheme。 有什么build议么? 问候 丹尼尔

第一次启动时,iCloud KeyValue存储未被识别

我的应用程序使用iCloud(键值存储)在多个设备之间同步唯一的ID。 这个作品在应用程序第一次启动的时候就被认为是真正的工作了。 它看起来像设备还没有熟悉的iCloud的价值观在第一次启动,只有在应用程序安装并已运行了一段时间。 我检查应用程序主视图的viewDidLoad函数中的iCloud值。 所以,我的问题是: 这是预期的行为? 如果是的话,还有其他解决scheme吗? 难道这只是从Xcode运行而不是运输版本的问题? 如果是的话,如何testing? 谢谢! 碧玉

使用iCloud在多个设备上同步核心数据

最近有很多讨论关于iCloud和Core Data的问题,以及苹果公司的API如何在iOS 5和iOS 6中破碎。 鉴于目前苹果的Core Data API的状态,是否有可能使用iCloud在多个设备间可靠地进行同步? 如果是这样,你会怎么做? 如果不是,请推荐一种替代方法。

iCloud&NSFileWrapper:在设置中显示为2个不同的文件

我有一个应用程序使用基于NSFileWrapper的UIDocument。 我的文件包装器是一个名为“XXX.cp”的目录,有两个子文件“photo.data”和“photo.metadata”。 它似乎保存和加载文件,但是当我去设置\pipe理存储\未知的子文件分开列出: 我期待它显示“XXX.cp”,而不是这两个子文件。 我认为我已经正确设置并导出了文档UTI: 我想我正在创build文件包装(特别是因为它读取/写入罚款): – (void)encodeObject:(id<NSCoding>)object toWrappers:(NSMutableDictionary *)wrappers preferredFilename:(NSString *)preferredFilename { @autoreleasepool { NSMutableData * data = [NSMutableData data]; NSKeyedArchiver * archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data]; [archiver encodeObject:object forKey:@"data"]; [archiver finishEncoding]; NSFileWrapper * wrapper = [[NSFileWrapper alloc] initRegularFileWithContents:data]; [wrappers setObject:wrapper forKey:preferredFilename]; } } – (id)contentsForType:(NSString *)typeName error:(NSError *__autoreleasing *)outError { if (self.captionedPhotoMetadata == […]