gpt4 book ai didi

iphone - 存档可变数组 - doesNotRecognizeSelector 异常

转载 作者:搜寻专家 更新时间:2023-10-30 19:55:42 25 4
gpt4 key购买 nike

我有一个“doesNotRecognizeSelector”异常,我怀疑我的解压器可能返回不可变数组而不是可变数组。我对吗 ?我应该如何正确地归档和归档? (异常(exception)的地方是show down)

谢谢!!!

NSMutableArray* arr;

- (void) write
{
NSMutableData *data = [[NSMutableData alloc] init];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];

NSMutableArray *copy = [[NSMutableArray arrayWithArray:self.Arr] copy];
[archiver encodeObject:copy forKey:@"Key"];
[archiver finishEncoding];
[data writeToFile:[Util DataPath] atomically:YES];
[archiver release];
[data release];
[copyOfPaidPacks release];
}




-(NSMutableArray*) read
{
NSString* DataPath = [Util FilePath];
NSData *data = [[NSMutableData alloc] initWithContentsOfFile:DataPath];
NSKeyedUnarchiver *unarchiver = nil;
if (data != nil)
{
unarchiver = [[NSKeyedUnarchiver alloc]initForReadingWithData:data];

if([self.Arr count] <= 0)
{
self.Arr = [unarchiver decodeObjectForKey:@"Key"];
}
}

[unarchiver finishDecoding];
[unarchiver release];
[data release];
return self.arr
}

-(void)B
{
[self write];
NSMutableArray* SecondArr = [self read];
[SecondArr sortUsingSelector:@selector(CompareDate:)]; - > `****THIS IS WHERE I GET THE EXCEPTION`
}
  • 编辑

添加比较方法:

- (NSComparisonResult)CompareDate:(T*)p
{
NSComparisonResult result = [self.changeDate compare:p.changeDate];
if(result == NSOrderedDescending)
result = NSOrderedAscending;
else if(result == NSOrderedAscending)
result = NSOrderedDescending;

if(result == NSOrderedSame)
{
result = [self CompareName:p];
}

return result;
}

最佳答案

NSKeyedUnarchiver 确实返回了一个不可变的 NSArray。如果你真的想得到一个 NSMutableArray,你需要在 decodeObjectForKey: 的返回值上调用 -mutableCopy

这个代码片段让我想知道你是否真的需要一个可变数组。看起来您只是对从 -read 获得的数组进行排序。为什么不直接在不可变的 NSArray 上调用 sortedArrayUsingSelector:

关于iphone - 存档可变数组 - doesNotRecognizeSelector 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4501031/

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