iOS   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 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本地做的那样).

我应该创建一个包含上面列出的属性的UIDocument对象数组,我应该创建一个包含上述数据对象的1个实例的UIDocument实例,然后创建一个包含所有实例的数组,或者1个单个UIDocument是否包含完整的数组自定义对象?

做了一些研究,但我仍然感到困惑.
最后,我需要同步一个包含所述自定义对象数组的文件.

在此先感谢您的帮助

我今天拥有的是一个自定义类,如上所述,有4个字符串,名为Snippet,在我的Root视图中,我有一个名为list的NSMutableArray,我在其中添加了该Snippet类的每个新实例.

self.list = [[NSMutableArray alloc] init];
Snippet *newEntry = [[Snippet alloc] init];
[self.list addObject:newEntry];

我应该创建一个拥有自定义对象数组的UI Document子类吗?

解决方法

example in the docs确实显示一个只有一个字符串的UIDocument子类,但它从-contentsForType返回一个NSData:error:.您可以使用NSKeyedArchiver在NSData中存储任意数量的对象.阅读 Serializing Objects以了解如何使用NSKeyedArchiver编码对象(并继续阅读以了解如何将它们取回!).

以您的房产为例……

@interface MyDocument : UIDocument
{
}
@property (nonatomic,copy) NSString    *url;
@end

@implementation MyDocument

//...

- (id)contentsForType:(NSString *)typename error:(NSError **)outError
{
    NSMutableData *data = [NSMutableData data];
    NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWriTingWithMutableData:data];
    [archiver encodeObject:name forKey:@"name"];
    [archiver encodeObject:dateCreated forKey:@"created"];
    [archiver encodeObject:desc forKey:@"desc"];
    [archiver encodeObject:url forKey:@"url"];
    [archiver finishEncoding];
    // release archiver if you're not using ARC
    return data;
}
@end;

警告:我没有编译上面的代码,所以没有保证.这应该作为一个示例来说明如何使用归档程序将多个对象存储在单个数据对象中,您可以将其作为文档的内容返回.

大佬总结

以上是大佬教程为你收集整理的ios – iCloud – 如何保存包含自定义对象数组的存档全部内容,希望文章能够帮你解决ios – iCloud – 如何保存包含自定义对象数组的存档所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。