Ich habe eine "doesNotRecognizeSelector" -Ausnahme und ich vermute, dass meine unarchiver möglicherweise unveränderlichen Array anstelle von veränderbar zurückgeben. Bin ich richtig? Wie sollte ich die Archivierung und Archivierung richtig machen? (Ort der Ausnahme ist Showdown)Mutable-Array archivieren - doesNotRecognizeSelector-Ausnahme
Danke !!!
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`
}
- bearbeiten
die Methode vergleichen Hinzufügen:
- (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;
}
überschreiben Was wird der Wähler es nicht erkennt? EDIT: Okay, scrollte runter und sieh jetzt. Haben Sie eine benutzerdefinierte 'CompareDate:' Methode definiert? Welche Arten von Objekten befinden sich in Ihrem Array? – NSGod
Ich habe es definiert. Ich habe Code hinzugefügt, damit Sie es überprüfen können. – Idan