2011-03-29 4 views
2

내 앱의 다른 지점에 데이터를 저장하고 싶습니다. 앱 전반의 개체에 액세스 할 수 있습니다. PHP 나 전역 변수에서 세션과 비슷한 것. 나는 NSUserDefaults를 사용할 수 있다는 것을 알고 있지만 어떻게 값을 더하고 계속 액세스 할 것인지 잘 모르겠습니다. 예를 들어, 먼저 로그인하는 동안 사용 된 사용자 이름을 저장하고 싶습니다. 그런 다음 세 번째 화면에서 회사 목록에서 선택한 해당 사용자의 회사를 저장하려고합니다. 그런 다음 다섯 번째 화면에서 사용자가 선택한 위치를 저장하려고합니다. 그런 다음 사용자가 자신의 선택에 따라 사용할 수있는 기능이 다릅니다. 내가 초보자이기 때문에 이것이 바보 같은 질문이라면 유감스럽게 생각하지만 아무도 내가 앱을 통해 액세스 할 수있는 여러 데이터를 저장하고 검색하는 방법을 알려줄 수는 없다.iPhone에 세션 데이터 저장

답변

2

귀하의 의견에 속성 목록에 코드 스 니펫을 제공 해달라고 요청했습니다. 확실한. 아무런 문제 없습니다. 먼저해야 할 일은 속성 목록 파일을 만드는 것입니다. 프로젝트에 속성 목록 형식의 파일을 추가하기 만하면됩니다. DataPoints.plist라고 부르 자. 이 예제의 목적을 위해 파일에는 NSString 유형의 키 - 값 항목이 포함됩니다. 코드 예제에서 간단히 속성 목록 항목을 추출하고 배열을로드합니다. 이제 어레이로 원하는 모든 작업을 수행 할 수 있습니다. 그것을 사용하여 테이블 뷰 등을로드하십시오. 희망이 도움이됩니다. 만약 그렇다면, 그것을 수용된 대답으로 표시해주십시오. 감사!

NSString *errorDesc; 
NSPropertyListFormat format; 
NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"DataPoints" ofType:@"plist"]; 

NSData *plistXML = [[NSFileManager defaultManager] contentsAtPath:plistPath]; 

NSDictionary *temp = (NSDictionary *)[NSPropertyListSerialization 
            propertyListFromData:plistXML 
          mutabilityOption:NSPropertyListMutableContainersAndLeaves 
          format:&format 
          errorDescription:&errorDesc]; 

if (!temp) { 
    // Handle Error 
    Log(@"Error reading plist: %@, format: %d", errorDesc, format); 
} 

NSArray *dataPoints = [NSArray arrayWithArray:[temp objectForKey:@"DataPoints"]]; 
0

싱글 톤 개체를 만듭니다. 매우 좋은 패턴은 아니지만 귀하의 질문에 대한 가장 쉬운 해결책이라는 것을 알고 있습니다.

5

iOS 기기에는 다양한 데이터 저장 옵션이 있습니다. 다음은 고려해 볼 수 있습니다 몇 가지 있습니다 :

  1. 코어 데이터와 SQL 데이터 저장소 또는 어느 쪽 XML 저장소. 이것은 기본적으로 모든 애플 리케이션이 사용할 수있는 애플의 장치 데이터베이스 프레임 워크 라이브러리입니다. 가장 쉬운 옵션은 아니지만 앱 코드 전체에서 사용할 수있는 다양한 양의 다양한 데이터를 저장할 수 있습니다. 또한 응용 프로그램을 종료하기 전에 데이터를 영구 데이터 저장소에 저장하는 동안 데이터는 응용 프로그램 시작 사이에 유지됩니다.

  2. 속성 목록. 속성 목록은 Core Data보다 가벼우 며 사용하기 쉽습니다. 기본 키 - 값 쌍을 영구 속성 목록 파일에 저장하고 검색 할 수 있습니다. 따라서 앱을 종료하기 전에 속성 목록 파일에 데이터를 저장하는 한 앱 시작 사이의 데이터 보존 이점을 얻을 수 있습니다.

  3. 텍스트 파일에 데이터를 저장하십시오. 이것이 속성 목록보다 이점이 있는지 확실하지 않습니다.

  4. 사용자 기본값. 앱 사용 중에 새로운 유형의 데이터를 쉽게 추가 할 수 있는지 확신하지 못합니다. 이 기능은 기본 앱 설정 모음을 제공하고 사용자가 앱을 사용하는 동안 맞춤 설정할 수 있도록하기 위해 더 많이 사용됩니다.

  5. 메모리 내 싱글 톤 객체. 이것은 옵션 일 수 있지만, 일단 앱이 종료되면 모든 데이터는 어떻게 든 영구 데이터 저장소에 저장되지 않는 한 사라집니다.

다른 옵션이 있습니다. 나는 그들에 대해 읽을 관심이있을 것이다. 이게 도움이 되길 바란다.

+0

답변 해 주셔서 감사합니다. 위의 사용자 의견에서 속성 목록을 사용해야한다고 생각합니다. 또한 이것은 앱이 시작될 때 데이터를 가져올 필요가 없습니다. 동적 인 내용이고 사용자가 앱을 시작할 때 선택하는 항목이기 때문입니다. 그래서 매번 다를 것입니다.또한 당신이 어떻게 내가 속성 목록 파일을 생성하고 어떻게 저장하고 데이터를 검색하는지 보여 주시겠습니까? – developer

+0

속성 목록에 코드 예제를 제공했습니다. 하지만 앱 시작 사이에 데이터를 유지할 필요가없는 것 같다고 덧붙일 수도 있습니다. 이 경우 데이터가 메모리 힙을 많이 차지하지 않을 경우 Joris가 권장 한대로 메모리 내 싱글 톤 객체를 사용하는 것이 좋습니다. 데이터 힙이면 일부 메모리를 확보하기 위해 속성 목록이나 핵심 데이터와 같이 영구 저장소에 데이터를 덤프하는 것을 사용해야합니다. –

관련 문제