gpt4 book ai didi

objective-c - 从文件中读取 NSMutableArray

转载 作者:行者123 更新时间:2023-12-03 17:31:53 28 4
gpt4 key购买 nike

我正在尝试从文件中读取 2 个 NSMutableArrays。我这样保存和加载:

保存:

NSMutableDictionary *saveDict = [NSMutableDictionary dictionary];
[saveDict setValue:name forKey:@"name"];
[saveDict setValue:last_episodue forKey:@"whereat"];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingString:@"/ShopFile.sav"];
[saveDict writeToFile:filePath atomically:YES];

加载:

        name = [[NSMutableArray alloc]init];
last_episodue = [[NSMutableArray alloc]init];

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingString:@"/ShopFile.sav"];
NSDictionary *loadDict = [NSDictionary dictionaryWithContentsOfFile:filePath];
name = [loadDict valueForKey:@"name"];
last_episodue= [loadDict valueForKey:@"whereat"];

变量name和last_episodue已在头文件中声明。

程序编译并运行,但是在运行时尝试加载文件时,代码的 LOAD 部分将执行,完成后,程序将停止工作。这是调试信息(第一部分):

2012-10-13 12:14:10.801 series[5223:303] -[NSISRestrictedToZeroMarkerVariable copyWithZone:]: unrecognized selector sent to instance 0x1001900c0
2012-10-13 12:14:10.803 series[5223:303] -[NSISRestrictedToZeroMarkerVariable copyWithZone:]: unrecognized selector sent to instance 0x1001900c0
2012-10-13 12:14:10.906 series[5223:303] (

知道问题出在哪里吗?谢谢!

编辑:这是保存的文件的内容:

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>name</key>
<array>
<string>a</string>
</array>
<key>whereat</key>
<array>
<string>a</string>
</array>
</dict>
</plist>

最佳答案

这有点盲目,因为如果没有更多上下文,我无法判断你的内存管理是什么样的,但我只是遇到了这个问题,因为一个变量的值没有正确保留(我们正在分配它)使用 objc_setAssociatedObject 但传递 OBJC_ASSOCIATION_ASSIGN 作为 objc_AssociationPolicy)。我始终持有的指针最终指向 NSISRestrictedToZeroMarkerVariable 的实例。

由于 NSISRestrictedToZeroMarkerVariable 不是公开公开的类,因此您看到的很可能是内存覆盖的结果。在 Xcode 中设置异常断点并检查哪一行抛出此错误,然后跟踪该变量的内存管理。

关于objective-c - 从文件中读取 NSMutableArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12872138/

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