繁体   English   中英

如何编码和解码const char *

[英]How to encode and decode a const char *

这是我第一次尝试序列化/反序列化对象。 该对象的一个​​成员是一种const char *。

---------------------------------------- 这里添加了信息 ------- ---------------------------

此const char *是表示图像的字节数组。 由于图像识别要求,我真的需要从UI获取值并从UI返回并将其存储为字节数组。 我希望这可以解决一些困惑。

------------------------------------------- 结束于此 ----- --------------------------------

我对解码和编码的选项感到困惑。 我无法理解使用哪个选项,唯一有意义的是要求at:(const void *)数组。 那里有什么?

- (id)initWithCoder:(NSCoder *)decoder
{
    self = [super init];
    if (self) {

以下是我无法弄清楚的界限。 我有前两个参数好,但第三个参数是什么? at:的参数是一个数组。 但我没有阵列。 我应该将这些解码为数组吗? 如果是这样,那么我需要初始化一个数组以将字符放入?

        _templateData = [decoder decodeArrayOfObjCType:_templateData count:_templateSize at:<#(void *)#>]; //const char *templateData; 

之后似乎没问题:

        _templateSize = [decoder decodeIntegerForKey:@"templateSize"];       //NSUInteger templateSize;
        _templateQuality = [decoder decodeIntForKey:@"templateQuality"];     //int templateQuality;
        _templateLocation = [decoder decodeIntForKey:@"templateLocation"];   //int templateLocation;
    }
    return self;
}

然后有编码它。

- (void)encodeWithCoder:(NSCoder *)coder
{

同样的问题在这里 我没有阵列。 我是否需要初始化数组以将字符放入? 是这条线应该如何工作?

    [coder encodeArrayOfObjCType:_templateData count:_templateSize at:<#(const void *)#>]

其余的再次出现:

    [coder encodeInteger:_templateSize forKey:@"templateSize"];
    [coder encodeInt:_templateQuality forKey:@"templateQuality"];
    [coder encodeInt:_templateLocation forKey:@"templateLocation"];

}

有没有人成功编码和解码了一个const char *的类型?

谢谢您的帮助。

听起来最好的解决方案是将您的数据数组转换为NSData实例,并对其进行编码。 这非常简单:

NSData *data = [NSData dataWithBytesNoCopy:_templateData length:lengthOfTemplateData freeWhenDone:NO];
[coder encodeObject:data forKey:@"templateData"];

然后,用于解码:

NSData *data = [decoder decodeObjectForKey:@"templateData"];
[data getBytes:_templateData length:sizeOfTemplateDataBuffer]; // Assumes _templateData has been allocated to hold sizeOfTemplateDataBuffer bytes.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM