2013-03-19 2 views
0

앱 개요 :NSDictionary 및 NSUserDefaults를 데이터 저장소로 사용 하시겠습니까?

사용자는 인터넷 속도 테스트와 다양한 실험 결과의 다른 유형을 수행 할 수있다. 일반적으로 테스트 결과는 NSArrays와 NSStrings에 저장됩니다.

목표 :

나는 사용자가 돌아가서 과거의 결과를 볼 수있는 이력 시스템을 만들려고 해요.

문제 :

내가 힘든 시간을 사용할 수있는 저장 매체 파악하고 모두가 함께 맞는 방법을 보내고 있습니다.

String 또는 Integer 값을 사용하여 NSUserDefaults의 이름을 지정하는 방법이 있습니까? 예를 들어, "history1"의 값을 가진 "hisName"이라는 문자열이 있습니다. NSUserDefaults * hisName의 이름을 지정할 수 있지만 history1 값으로 되돌릴 수 있습니까? 각 테스트마다 숫자가 증가하고 새로운 히스토리 기본값이 생성됩니다 (history2, history 3 등).

이 앱의 Android 버전에서도 가능합니다. 따라서 앱은 허용되는 최대 기록 수에 따라 즉석에서 '기록 -X'를 만듭니다. 최대 값에 도달하면 첫 번째 값을 덮어 씁니다.

UPDATE : 나는에 얻고 무엇을 설명하기 위해 조금 더 열심히 해보자

.

사용자가 테스트를 마친 후 필요한 모든 데이터를 History1이라는 NSUserDefaults/NSDictionary 파일에 저장합니다.

그런 다음 HistoryCount라는 Integer 값을 2로 증가시킵니다. 이제 사용자가 다른 테스트를 수행 할 때 2가 Integer HistoryCount에서 오는 NSUserDefaults/NSDictionary "History2"를 호출하려고합니다. NSString 등을 사용하여 NSUserDefaults/NSDictionary라는 이름을 찾을 수 없습니다.

+0

당신은 '가치 history1'로 되돌릴 수 있습니까? – Rakesh

+0

은 sqlite 또는 코어 데이터 저장소가 더 적합하지 않은 것을 성취하려고합니다! – ahmad

+0

@Dan : @ "hisName"키에 "history"값을 갖는 문자열을 저장할 수 있습니다. 문제가 무엇입니까?문자열 값을 증가 시키려면 자신 만의 논리를 구현해야합니다. 그리고 이런 이유로 왜 사전이 필요합니까? – Rakesh

답변

0

이 메서드를 사용하여 사전을 저장합니다.

-(void)saveDefaults:(int)historyCount{ 
    NSDictionary *history1 = [NSDictionary dictionary]; //You already have this dictionary 
    NSString *historyKey = [NSString stringWithFormat:@"history%d",historyCount]; 
    [[NSUserDefaults standardUserDefaults] setObject:history1 forKey:historyKey]; 
} 

코드가 다소 비슷할 수 있습니다.

self.historyCount =1; 

[user runTest]; //first run 
[user saveDefaults:self.historyCount]; 
self.historyCount++; 


[user runTest]; 
[user saveDefaults:self.historyCount]; 
self.historyCount++; 

등등 .. 당신이 다음 배열 (역사 개체에 액세스하는 데 사용하는 지수)로 역사 객체의 그룹을 저장할 수있는 동일한 사용자에 대해 여러 역사 사전 개체를 원하는 경우

또는 키가 @"history1"이고 값이 history1 인 사전을 사용할 수 있습니다. 위에 표시된 것과 같은 새 키를 생성 할 수 있습니다.

그러나 각 사용자에 대해 여러 명의 사용자 및 많은 기록 개체가있는 경우 추적하기가 어려울 수 있습니다. 대신 객체 지속성/관리를 위해 코어 데이터를 사용할 수 있습니다.

관련 문제