【问题标题】:Saving an NSMutableArray to Core Data将 NSMutableArray 保存到核心数据
【发布时间】:2010-11-09 09:33:10
【问题描述】:

我想将 NSStrings 的 NSMutableArray 添加到我的核心数据模型中的一个实体。问题是这不是 Core Data 中支持的类型。

我尝试制作一个可转换的属性,但问题是我看不到将 NSMutableArray 转换为 NSData,然后从 NSData 转换回 NSMutableArray 的方法。有谁知道如何解决这个问题?

(我知道我可以存档数组,但我不想这样做,我希望它出现在我的模型中)。

【问题讨论】:

    标签: iphone core-data nsmutablearray


    【解决方案1】:

    您可以在您的建模对象中拥有一个二进制数据属性,将数组归档为数据,然后将其交给对象。

    但我认为更好的方法是建立一对多关系,而不是直接使用数组。

    ****编辑:以下是如何将数组归档到 NSData 中,以便在您的托管对象中使用它***

    NSData *arrayData = [NSKeyedArchiver archivedDataWithRootObject:[NSArray arrayWithObjects:@"1",@"2", nil]];
    

    基本上,您拥有的任何符合 NSCoding 协议的类都可以通过这种方式归档。 NSArray/NSMutableArray 已经符合它。他们告诉他们所有的对象自己存档,所以他们也必须遵守。并且所有这些对象的成员都必须符合,等等。就像一棵树。

    既然你的数组符合,而且它是一个 NSString 的数组(也符合),那么你就是黄金。

    【讨论】:

    • 但是这里我们有一个简单的字符串数组 - 你是否必须将每个字符串包装在一个托管对象中,或者是否有任何类型的 NSString 周围的瘦 NSManagedObject 包装器已经可用?
    • 如何将字符串数组转换为数据? (我找到了解决这个问题的方法,我不必使用字符串数组,但我仍然对解决方案感到好奇)
    • 对面是NSArray* array = [NSKeyedUnarchiver unarchiveObjectWithData:arrayData];
    • 正确的做法是再创建一个实体表,并在这两个实体之间添加关系!我认为归档和取消归档数组是浪费时间。
    • 为什么添加另一个实体表并具有关系“更好”?是因为它是明确的吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-19
    • 2012-05-05
    • 1970-01-01
    相关资源
    最近更新 更多