gpt4 book ai didi

objective-c - 如何编码和解码 const char *

转载 作者:太空宇宙 更新时间:2023-11-04 08:49:46 24 4
gpt4 key购买 nike

这是我第一次尝试序列化/反序列化一个对象。对象的一个​​成员是 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.

关于objective-c - 如何编码和解码 const char *,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20082304/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com