代码之家  ›  专栏  ›  技术社区  ›  S.P.

如何在Coredata中使用struct存储自定义对象

  •  6
  • S.P.  · 技术社区  · 16 年前

    我必须将自定义类对象存储到Coredata。问题是我的自定义类包含结构、枚举等。我尝试了以下方法。

    -(void)encodeWithCoder:(NSCoder*)编码器。

    但是我得到了这个错误

    [NSKeyedArchiver]对象的编码值ype:at:]:此存档程序无法对结构的

    将此对象存储到Coredata的最佳实践是什么。请帮帮我。

    3 回复  |  直到 16 年前
        1
  •  6
  •   epatel    16 年前

    您可以将结构封装在 NSData ,即

    [coder encodeObject:[NSData dataWithBytes:&my_struct length:sizeof(my_struct)] 
                 forKey:@"my_struct"];
    

    和阿奇弗一起解码

    NSData *data = [coder decodeObjectForKey:@"my_struct"];
    [data getBytes:&my_struct length:sizeof(my_struct)];
    
        2
  •  4
  •   mrueg    16 年前

    -[initWithCoder:] 和 -[encodeWithCoder:] ,然后可以按任何方式对struct对象进行编码/解码。

    [coder encodeObject:[NSValue valueWithBytes:&yourStructVariable objCType:@encode(struct YourStructName)] forKey:@"someKey"]; 在里面 -[编码器:] -[初始化WithCoder:] .

    然后就可以将类对象作为可转换的存储在核心数据中。

        3
  •  1
  •   NebulaFox    16 年前

    对于一个struct,我认为最好创建一个可以编码和解码struct的函数,就像任何Objective-C对象一样。

    对于枚举,我不太确定。枚举只是与名称相关联的数字,所以只需对它们进行编码并将其解码为数字。