2016-08-30 5 views
0

내가 좋아하는 이름 패턴으로 NSDocument 많은 이미지를 저장하기 위해 노력하고 : - 회의 수에 따라 증가한다: [아이폰 OS]

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

}