2012-03-30 2 views
0

여기 NSArrays/NSDictionary를 저장하는 것과 관련된 여러 가지 질문을 보았습니다. 그러나 하위 요소 중 일부가 어떻게 될지에 대해 혼란 스러워요. UIImages입니다.UIImages (및 기타)의 NSArray를 포함하는 NSDictionary를 포함하는 NSArray를 저장합니다.

작은 컨텍스트를 제공하기 위해 앱은 본질적으로 블로그 유형 앱입니다. 사용자가 새 항목을 구성 할 때, 자신의 포스트는 다음과 같은 포함 할 수 있습니다 자신의 사진 앨범에서

  • 최대 3 이미지를
  • 텍스트
  • 위치
  • 본질적으로

, 난 사용자가 일시적으로 블로그 게시물을 취소하기로 결정한 경우 앱에 임시 보관함 기능을 구현하려고합니다. 사용자가 블로그 게시물을 취소하면 UIActionSheet에 초안을 저장할지 묻는 메시지가 나타납니다. 사용자가 다시 게시하기를 원하면 저장된 초안으로 중단 한 부분부터 시작할 수 있습니다.

이 시점에서

, 나는이 다음 개체를 저장해야합니다 :

1) NSArray of selected photos 
---> contains NSDictionaries (up to 3) 
--------> UIImage (large sized version) 
--------> UIImage (thumbnail sized version) 

2) NSDictionary of NSValues (just some view x,y position data) 

3) Text -- NSString data of the blog text they have written 

4) Location text -- NString data of their current location 

을 감안할 때 나는 "저장 초안"functinality을하기 위해 위의 1 ~ 4 데이터를 저장하는 데 필요한, 무엇이입니다 이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 이 모든 데이터를 보관하기 위해 특별한 수업을해야합니까? 또한, 디스크에 저장하기 전에 먼저 UIImages를 NSData로 만들 필요가 있습니까?

감사합니다.

답변

1

예 클래스/모델과 유사한 구조가 더 이해하기 쉽고 처리하기 쉽습니다. 다음 사진 데이터에 대한 또 하나 개의 모델을 만들 수 있습니다 같은 -

Interface Blogdata 
    NSArray *selectedPhoto; 
    NSDictionary *positionValues; 
    NSString *blogText; 
    NSString *locationText; 

및 뭔가;

Interface Photodata 
    NSDictionary *photo; 
    UIImage *largeImage; 
    UIImage *thumbImage; 
+0

감사합니다. UIImage 처리에 대해 여전히 혼란 스럽습니다. UIImage 객체를 사용하여 Photodata와 같은 모델을 생성한다고 가정합니다. UIImage 객체가 그대로 직렬화됩니까, 아니면 먼저 NSData로 변환 한 다음 Photodata를 직렬화해야합니까? – kurisukun

+0

NSData를 가지고 있다면 그것을 어느 쪽이든 사용할 수 있습니다 - 1.UIImage 대신에 NSData에 저장하고 그 이미지를 필요로 할 때 변환한다 (비트 메모리가 소모 되더라도) 2.store는 uiimage에서 직접 (nsdata에서 uiimage로 변환 한 후) – rishi

1

언급 한 모든 속성은 Blog 클래스에 속한 것처럼 보입니다. 이미 그룹화되어 있습니까? Blog 개체는 언급 한 4 가지 개체 인 변수의 속성 (속성)을 사용하여 초안 상태를 캡처 할 수 있습니다. 그런 다음 Blog 객체를 NSData로 저장하고 사용자가 초안을 다시 원할 때 읽을 수 있습니다.

이점은 매번 네 번 저장하고 검색하는 대신에 한 개체 만 저장하면 걱정할 필요가 있다는 것입니다.

+0

이 시점에서 아직 수업에 들지는 않지만 그렇게하는 것이 좋습니다. 그러나, 비록 내가 블로그 클래스를 만들지 않는다면 어쨌든 UIImages를 NSData로 변환해야합니까? 아니면 블로그 클래스 UIImages 그대로 있고 그냥 NSData 같이 블로그 클래스 자체를 저장할 수 있습니까? – kurisukun

1

가장 쉬운 방법은 응용 프로그램의 문서 폴더에 이미지를 저장하고 파일 이름과 drafts.plist에 텍스트로 표현 될 수있는 다른 데이터의 NSArray를 저장하는 것입니다.

filenameStr = [NSString stringWithFormat:@"image1.png"]; 
fileManager = [NSFileManager defaultManager]; 
paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
documentsDirectory = [paths objectAtIndex:0]; 
imagePath = [documentsDirectory stringByAppendingString:@"/"]; 
imagePath = [imagePath stringByAppendingString:filenameStr]; 
NSData *imageData = UIImagePNGRepresentation(myImage); 
[imageData writeToFile:imagePath atomically:YES]; 
관련 문제