2014-04-19 2 views
0

안녕하세요 저는 NSMutableDictionary을 가지고 있고 키 (위도, 경도, 이미지, 메타 메지)가있는 5 개의 객체를 추가 한 다음 NSMutableArray에 추가하려고 시도했으며 NSMutableArray을 .plist 파일에 작성하려고했습니다. 그러나 사실 그것은 쓰는 것이 아닙니다. 내 .plist 파일은 여전히 ​​비어 있습니다. 그것은 전무 값을 인쇄Plist에 데이터를 저장할 수 없습니까?

finalArray=[[NSMutableArray alloc]initWithContentsOfFile:filePath]; 
    NSLog(@"server%@",finalArray); 

PLIST 내부의 데이터를 확인하는 난 다음을 사용 코드 뒤에

paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
filePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"history.plist"]; 
BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:filePath]; 

if([latitude length]>0 && [longitude length]>0){ 
[dictValue setObject:latitude forKey:@"latitude"]; 
[dictValue setObject:longitude forKey:@"longitude"]; 
} 
[dictValue setObject:metaImage forKey:@"imageData"]; 
[dictValue setObject:image forKey:@"image"]; 
if([_intensity.text length]>0){ 
[dictValue setObject:_intensity.text forKey:@"intensity"]; 
}else{ 
    intensityAlert=[[UIAlertView alloc]initWithTitle:@"Beta App" message:@"Please select intensity." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; 
    [intensityAlert show]; 
} 

if(fileExists){ 
    finalArray=[[NSMutableArray alloc]initWithContentsOfFile:filePath]; 
    [finalArray addObject:dictValue]; 
    NSLog(@"dd%@",dictValue); 

}else{ 
    [finalArray addObject:dictValue]; 
    NSLog(@"new%@",finalArray); 

} 
[finalArray writeToFile:filePath atomically:YES]; 

:

내 코드를 확인하시기 바랍니다.

+0

어떤 종류의 데이터가'metaImage'와'image'입니까? 'UIImage' 객체를 먼저 NSData로 변환하지 않고 plist에 저장할 수 없습니다. – rmaddy

+0

uiimage, 그래서 그것을 nsdata ryt로 변환해야합니까? – Bangalore

+0

"ryt"로 "right"를 의미한다면, 'UIImage'를 NSData로 변환하고 NSData를 사전에 넣어야합니다. – rmaddy

답변

0

의 시도하자

  1. finalArray는 다른 할당된다

    if(fileExists){ 
    finalArray=[[NSMutableArray alloc]initWithContentsOfFile:filePath]; 
    [finalArray addObject:dictValue]; 
    NSLog(@"dd%@",dictValue); 
    }else{ 
    // let be sure that final array allocated : [[NSMutableArray alloc] initWith...] 
    [finalArray addObject:dictValue]; 
    NSLog(@"new%@",finalArray); 
    } 
    
  2. metaImage 또는 이미지가있는 NSData 형식이 당신을 도와줍니다

희망으로 저장해야합니다. - (BOOL)writeToFile:(NSString *)path atomically:(BOOL)flag위한

0

로서 문서 :

이 방법은 재귀 밖으로 쓰기 전에 포함되는 모든 오브젝트 프로퍼티리스트 개체 (을 NSData,있는 NSDate,의 NSNumber, 는 NSString, NSArray를하거나 NSDictionary와의 인스턴스)임을 유효화 파일이고, 결과 파일이 유효한 특성 목록이 아니기 때문에 은 모든 오브젝트가 특성 목록 오브젝트가 아니면 NO를 리턴합니다.

이미지를 폴더에 저장하고 이미지 파일 경로를 plist 파일에 저장할 수 있습니다.

관련 문제