2017-07-03 4 views
0

Ich versuche, ein Objekt von First_view_controller in Second_view_controller mithilfe von State Restaurierung und Konservierung Technik ohne Storyboards zu speichern, aber meine App stürzt mit nicht erkannte Selektor-Instanz Fehler. Ich habe versucht, NSString-Objekt zu erhalten, es funktioniert gut, aber wenn ich versuche, ein Objekt zu erhalten, kann ich nur den Fehler sehen. Vielleicht mache ich es nicht richtig, bitte hilf mir. Vielen Dank im Voraus.Wiederherstellen von Objekten im Status Preservation- Objective c

+0

Können Sie den genauen Fehler und den entsprechenden Code posten? – Willeke

+0

Problem behoben Ich habe versucht, mein benutzerdefiniertes Objekt zu speichern. – User

Antwort

0

Während benutzerdefinierte Objekt verwenden, sollten Sie Protokoll NSCoding implementieren, die Methoden als belows haben:

-(void)encodeWithCoder:(NSCoder *)encoder{ 
    [encoder encodeObject:self.state forKey:@"viewState"]; 
} 

- (id)initWithCoder:(NSCoder *)decoder { 
    if (self = [super init]) { 
     self.state = [decoder decodeObjectForKey:@"viewState"]; 
    } 
    return self; 
} 

wenn ich nicht falsch bin können Sie diese Methoden in Ihrer Implementierung verpasst.

Und für diese Klasse Objektcode Einsparung folgt:

NSArray *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
NSString *file = [documentPath stringByAppendingPathComponent:@"ObjectStateContent.txt"]; 

NSMutableArray *arr=[NSMutableArray array]; 
[arr addObject:self.stateObject];  

[NSKeyedArchiver arr toFile:file]; 

//And for unarchive object 
    NSMutableArray* myArray = [NSKeyedUnarchiver unarchiveObjectWithFile:file]; 

Sie ganz klar auf Speichern benutzerdefinierte Objekt in Datei oder einem anderen Speicherzustand ist, dass „kann in Form von String oder json usw. gespeichert Objekt sein sollte ., Objekt selbst kann nicht persistent sein ".

+0

Vielen Dank für die Unterstützung – User

+0

@User, wenn diese Lösung für Sie arbeitet, dann fordern Sie bitte diese Antwort zu akzeptieren, damit andere davon bewusst werden. – SachinVsSachin

Verwandte Themen