2016-08-30 5 views
0

Я пытаюсь хранить много изображений в NSDocument с шаблоном имен, как: -Хранение большого количества изображений в NSDocument в Objective-C: [IOS]

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

графа Изображение должно возрастать с числом раз в кнопка регистрации нажата. И для хранения этой кнопки постучал счет я использую NSUserDefault. Но проблема в том, что я могу только сохранить 1 изображение после того, как приложение рушится.

Ниже приводится код, я использую: -

- (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];   

} 

ответ

1

Граф должен быть 0 всегда, чтобы получить путь к каталогу документов. Впервые пользователь по умолчанию возвращает 0, следовательно, он получает каталог документа, но после первого считается, что счет становится 1, и когда он пытается найти объект из массива 1 индексного массива paths, он дает массив вне исключения.

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

NSString *documentsDirectory = [paths objectAtIndex:0]; 

Счастливый кодирования ...

0

Вы готовите documentsDirectory строку неправильно. Он не должен меняться со счетом.

исправленный код ниже:

- (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); 

} 
Смежные вопросы