gpt4 book ai didi

ios - 如何存档和取消存档 NSObject?

转载 作者:行者123 更新时间:2023-11-28 17:51:35 26 4
gpt4 key购买 nike

我正在尝试存档我在游戏中心回合制游戏中通过比赛数据发送的 NSObject。

下面是我归档对象的代码

turnDataObject MyData = [[turnDataObject alloc] init];

data = [NSKeyedArchiver archivedDataWithRootObject:MyData];

这是我解压对象的代码

readMyData = [NSKeyedUnarchiver unarchiveObjectWithData:data] ;

但是当我运行这段代码时,我得到一个错误

 thread 1 exc bad access code

我认为这可能与我存档数据时发送地址有关。如何发送在我取消存档后可读的内容?

编辑 1:我在取消存档后在下一行收到错误。它说我试图访问的地址是空的。我记得在某处读到我不会发送 NSObject 的地址,但我不确定如何将其转换为其他内容。

readMyData = [NSKeyedUnarchiver unarchiveObjectWithData:data] ;

NSLog(@"current game happens to be: %@", readMyData.currentGame);

编辑 2:这是我的 init with coder 和 encode with coder

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

_currentGame = [decoder decodeObjectForKey:currentGameDataKey];

}
return self;
}

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

//scores data keys
[encoder encodeObject:self.currentGame forKey:currentGameDataKey];

}

编辑 3:_currentGame 在我的对象 .h 文件中

 @property (assign, nonatomic) NSString *currentGame;

最佳答案

我建议创建 NSKeyedArchiver 和 NSKeyedUnarchiver 对象并使用它们而不是使用类型(看起来像你正在做的。)

我通常使用 Swift 编程,但这里有一个示例代码:

theArchiver NSKeyedArchiver = [[theArchiver alloc] init];
data = [theArchiver archivedDataWithRootObject:MyData];

然后你会用 NSKeyedUnarchiver 做同样的事情。

关于ios - 如何存档和取消存档 NSObject?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32145238/

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