2016-08-30 1 views
0

ich viele Bilder in NSDocument mit dem Namen Muster wie zu speichern versuchen: - mit der Anzahl der Zeiten erhöhen sollte eineViele Bilder in NSDocument in Objective-C Lagerung: [iOS]

image 1, image 2, image 3, image 4, ..... 

Bildanzahl Register-Taste wird angetippt. Und zum Speichern dieser Schaltfläche angezapft benutze ich NSUserDefault. Aber das Problem ist, dass ich nur 1 Bild speichern kann, nachdem die Anwendung abstürzt.

Es folgt der Code ich verwende: -

- (IBAction)registerFaceAction:(id)sender 
{ 
    NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults]; 

    long count = [userDefaults integerForKey:@"my_key"]; 

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 

    NSString *documentsDirectory = [paths objectAtIndex:count]; 

    NSMutableString *imageName = [NSMutableString string]; 

    [imageName appendString:[NSString stringWithFormat:@"ImageData %ld", count]]; 

    [imageName appendString:[NSString stringWithFormat: @".png"]]; 

    NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:imageName]; 

    UIImage *image = _inputImage; 

    NSData *imageData = UIImagePNGRepresentation(image); 
    [imageData writeToFile:savedImagePath atomically:NO]; 

    [userDefaults setInteger:count+1 forKey:@"my_key"]; 

    [userDefaults synchronize];   

} 

Antwort

1

Graf 0 immer sein sollte, das Dokument Verzeichnispfad zu erhalten. Zum ersten Mal gibt der Benutzerstandard 0 zurück, daher wird das Dokumentverzeichnis abgerufen, aber nach dem ersten wird der Wert 1, und wenn er versucht, das Objekt aus 1 Indexformular paths zu finden, gibt es eine Ausnahme außerhalb des Bereichs.

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 

NSString *documentsDirectory = [paths objectAtIndex:0]; 

Glückliche Codierung ...

0

Sie documents Zeichenfolge falsch vorbereiten. Es sollte sich nicht mit der Anzahl ändern.

Corrected Code unten:

- (IBAction)registerFaceAction:(id)sender 
{ 
    NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults]; 

    long count = [userDefaults integerForKey:@"my_key"]; 

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 

    NSString *documentsDirectory = [paths objectAtIndex:0];//corrected line 

    NSMutableString *imageName = [NSMutableString string]; 

    [imageName appendString:[NSString stringWithFormat:@"ImageData %ld", count]]; 

    [imageName appendString:[NSString stringWithFormat: @".png"]]; 

    NSLog(@"imageName is :- %@",imageName); 

    NSLog(@"Count is :- %ld",count); 

    NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:imageName]; 

    UIImage *image = self.imgCapture; 

    NSData *imageData = UIImagePNGRepresentation(image); 
    [imageData writeToFile:savedImagePath atomically:NO]; 

    [userDefaults setInteger:count+1 forKey:@"my_key"]; 

    [userDefaults synchronize]; 

    NSLog(@"imageName is :- %ld",count); 

}