2012-05-28 3 views
3

쓰기 읽기 나는 다음과 같은 데이터 구조를 가지고 이름, 번호 및 유형 사용자 정의 그래서 그가 원하는대로중첩 NSUserDefaults 배열은 /는

- Cards 
-- Item 0 
    --- Name: Card Name 
    --- Number: Card Number 
    --- Type: Card Type 
-- Item 1 
    --- Name: Card Name 
    --- Number: Card Number 
    --- Type: Card Type 
... 

사용자가 많은 카드를 추가 할 수 있습니다.

첫번째 질문은 내가 (이 같은 중첩)을 NSUserDefauls이 데이터

두번째 질문입니다 쓸 수있는 방법이고, 나는이 데이터를 검색 할 수있는 방법 테이블보기에서 각 카드의 이름을 보여줍니다. (나는 이미 테이블 뷰를 설정하고 작업 했으므로 NSUserDefaults에서 데이터를 가져 오는 문제입니다.)

모든 코드 예제는 높이 평가됩니다. 이 구조를 만들려면

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 

// getting an NSArray 
NSArray *myArray= [prefs stringForKey:@"keyToLookupArray"]; 

답변

9

을 가져

감사

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 

// saving an NSArray 
[prefs setObject:myArray forKey:@"keyToLookupArray"]; 

[prefs synchronize];  

저장

+0

그게 꼭 필요한 것입니다. 약간의 추가 도움이 있습니다. 새 카드를 덮어 쓰지 않고 저장하려면 어떻게해야합니까? – gmogames

+0

답변이 올바른 경우 표시하십시오. 새 카드를 저장하려면 self.cards에 새 객체를 추가하고 NSUserDefaults 저장된 값을 Cards 키로 재설정하십시오. – skram

+0

그래, 절약의 논리,하지만 난 여전히 obj - C와 함께 크롤 링 이후로 난 정말 어떻게 할 수 있는지 아니에요 :) – gmogames

0

은 매우 간단합니다, 당신은 당신의 키`카드 '에 대한 배열 값이 사전을 만들 수 있습니다.

NSMutableDictionary *stored = [[NSUserDefaults standardUserDefaults] valueForKey:@"user_cards"]; 

self.cards = [stored valueForKey:@"Cards"]; 

귀하의 tableview가 채울 cards 바르를 사용한다

, 당신이있는 NSMutableArray의 바르가 뭔가 like..Assuming self.cards 할 것 카드를 검색하기 위해
NSMutableDictionary *cards = [NSMutableDictionary dictionary]; 
NSMutableArray *cardArray = [NSMutableArray array]; 

NSMutableDictionary *item = [NSMutableDictionary dictionary]; 
[item setValue:@"Card Name" forKey:@"Name"]; 
[item setValue:@"Card Number" forKey:@"Number"]; 
[item setValue:@"Card Type" forKey:@"Type"]; 

[cardArray addObject:item]; 
[cards setValue:cardArray forKey:@"Cards"]; 

[[NSUserDefaults standardUserDefaults] setValue:cards forKey:@"user_cards"]; 
[[NSUserDefaults standardUserDefaults] synchronize]; 

.. 아래의 예 .. 귀하의 데이터는 다음과 같습니다.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
    ...... 

    //Now we populate each row of the cell with each `card` Name. 
    cell.textLabel.text = [[self.cards objectAtIndex:[indexPath row]] valueForKey:@"Name"]; 

    ..... 
} 

당신이 뭔가를 할 것입니다 저장된 사전에 새로 추가 한 카드를 다시 저장하기 ..

NSMutableDictionary *newCard = [NSMutableDictionary dictionary]; 
[newCard setValue:@"Card Name" forKey:@"Name"]; 
[newCard setValue:@"Card Number" forKey:@"Number"]; 
[newCard setValue:@"Card Type" forKey:@"Type"]; 

[self.cards addObject:newCard]; 

[[NSUserDefaults standardUserDefaults] valueForKey:@"user_cards"] setValue:self.cards forKey:@"Cards"]; 
[[NSUserDefaults standardUserDefaults] synchronize]; 

을이 질문에 도움이 경우, 답변으로 받아주십시오.