메신저에 알람 시계 앱을 쓰고 특별하게 비틀어 넣습니다. 세부 사항에 들어 가지 않을 것입니다. 어쨌든, 알람을 저장하는 가장 좋은 방법을 생각하려고합니다. 나는 그것의 예쁜 기본 애플 리케이션 이후로, 핵심 데이터를 요구하지 않을 것이라고 생각했다. 그래서 NSUserDefaults 아래에서 그들을 구하려고했습니다. 개체를 인코딩하는 데 NSCoding을 사용했지만 저장시 어떤 키를 사용해야하는지 알 수 없었습니다. 원래, 나는 각각에 대해 키를 사용하려고했다. 하지만 그 x (메모리 무거운)로 시작하는 모든 NSUserDefaults 키를 검색하는 것이 포함됩니다. 또한 id는 키가 증가 할 때 키를 삭제할 때 효율적인 방법을 찾아야합니다. 그래서 사전 (나는 너무 배열을 시도)에 경보를 추가하고 그 객체를 NSUserDefaults에 추가하려고 시도했다. 아무 소용이 없습니다. 누군가 제가이 일을 수행하는 가장 좋은 방법을 찾도록 도와 줄 수 있습니까? 핵심 데이터 여야한다면 그렇게 할 수 있습니다. 방금 알람 인스턴스를 추가하는 것만 큼 과잉이라고 생각했습니다. 사용자 기본값으로 촬영.여러 값을 하나의 NSUserDefaults 키에 저장하면
1
A
답변
2
각 경보를 NSDictionary에 저장하고 하나의 키 아래에 NSUserDefaults에 저장하는 AllAlarms 사용자 지정 클래스를 만드는 것은 어떻습니까? 그런 다음 NSUserDefauls에서 필요한 모든 알람 배열을 반환하는 클래스 메서드를 만들 수 있습니다. 이렇게하면 배열을 훨씬 빠르게 검색 할 수 있습니다. 다음은이 아이디어를 보여주는 코드 발췌입니다. 작년부터의 CS193P입니다. 그것이 논의 된 정확한 비디오를 알고 싶다면 알려주십시오. NSDictionary에 저장하는 모든 것이 pLists인지 확인해야하는 유일한 방법입니다. 희망이 도움이됩니다.
@property (nonatomic, strong) NSString *start;
@property (nonatomic, strong) NSString *end;
-(id)init
{
//Do not call your setters and getters in the designated initializer function of a class. Use instance variable to set the value.
self = [super self];
if(self){
_start = [NSDate date]; // returns date now
_end = _start;
}
return self;
}
-(NSTimeInterval) duration
{
//To return the different between dates you can use timeIntervalSinceDate: method
return [self.end timeIntervalSinceDate:self.start];
}
//Writing out custom class to NSUserDefaults
#define START_KEY @"StartDate"
#define END_KEY @"EndDate"
#define SCORE_KEY @"Score"
#define ALL_RESULTS_KEY @"GameResult_All"
-(void)synchronize
{
NSMutableDictionary *mutableGameResults = [[[NSUserDefaults standardUserDefaults] dictionaryForKey:ALL_RESULTS_KEY]mutableCopy]; //get a mutable copy because NSUserDefaults are not mutable
if(!mutableGameResults) mutableGameResults = [[NSMutableDictionary alloc]init];
mutableGameResults[[self.start description]] = [self asPropertyList];
[[NSUserDefaults standardUserDefaults]setObject:mutableGameResults forKey:ALL_RESULTS_KEY];
[[NSUserDefaults standardUserDefaults] syncronize];
}
-(id)initFromPropertyList:(id)pList
{
//convenience initializer
self = [self init];
if(self){
if([pList isKindOfClass:[NSDictionary class]]){
NSDictionary *resultDictionary = (NSDictionary *)pList
_start = resultDictionary[START_KEY];
_end = resultDictionary[END_KEY];
_score = [resultDictionary[SCORE_KEY] intValue];
if(!_start || !_end) self = nil;
}
}
return self;
}
-(id)asPropertyList
{
//returns a dictionaryof all the properties
return @{START_KEY : self.start, END_KEY : self.end, SCORE_KEY : @(self.score)};
}
+(NSArray) allGameResults
{
// returns all game results that are stored in NSUserDefaults in an Array
NSMutableArray *allGameResults = [[NSMutableArray alloc]init];
for(id plist in [[[NSUserDefaults standardUserDefaults] dictionaryForKey:ALL_RESULTS_KEY] allValues]){
GameResult *result = [[GameResult alloc] initFromPropertyList:pList]; // using convenience initilazer to create game results from NSUserDefaults
[allGameResults addObject:result];
}
return allGameResults;
}
관련 문제
- 1. 배열 값을 해시 키에 저장하면 오류가 발생합니다.
- 2. appSettings에서 하나의 키에 여러 값 사용
- 3. PHP에서 하나의 키에 여러 값을 가진 연관 배열을 만듭니다.
- 4. 내 NSDictionary 어떻게 든 하나의 키에 대해 여러 값을 가지고
- 5. JavaScript 맵에서 하나의 키에 여러 값을 "푸시"하는 방법
- 6. PFUser 키에 PFUser 객체를 저장하면 충돌이 발생합니다.
- 7. 파이썬 사전에서 하나의 키에 여러 값 추가하기
- 8. 여러 주석 저장 -NSUserDefaults
- 9. 여러 값을 사전 키에 할당 - Python
- 10. 하나의 키에 여러 개의 키 바인딩이 있습니까?
- 11. JSON을 사용하여 하나의 키에 여러 값 저장
- 12. 방법 NSUserDefaults
- 13. NSUserDefaults 및 값을 저장
- 14. 동일한 키에 여러 값을 가진 배열을 필터링하십시오.
- 15. 사전에있는 키에 여러 값을 추가하는 문제 (파이썬)
- 16. 해시 키에 여러 값을 할당하려면 어떻게해야합니까?
- 17. 여러 xib와 함께 NSUserDefaults 사용
- 18. 하나의 쿼리에서 여러 개의 키에 대한 MySQL의 최신 행
- 19. NSUserDefaults - 시작 값을 설정하는 방법?
- 20. null 이미지 값을 저장하는 NSUserDefaults
- 21. 은 NSUserDefaults 저장소 값을 perminetly
- 22. 키에 여러 값 지정?
- 23. 다른 사전 내의 사전 + 하나의 키에 대한 여러 값
- 24. 키에 값을 할당하는 방법
- 25. 동일한 개체에서 여러 유형을 저장하면
- 26. NSUserDefaults, 세 가지 옵션이있는 하나의 환경
- 27. NSUserdefaults 정보를 하나의 viewcontroller에서 다른보기 컨트롤러로 옮기기
- 28. 공백을 제거하고 사전에 단일 키에 저장된 여러 값을 결합합니다.
- 29. 하나의 기본 키에 여러 행을 삽입하는 방법은 무엇입니까?
- 30. ASP.net - 하나의 기본 키를 여러 외래 키에 연결하려고 시도했습니다.
좋은 아이디어. 그것이 아픈 것입니다. NSDictionary의 데이터는 일련의 문자열입니다. 답변 해주셔서 감사합니다. 방금 오버 헤드/메모리 사용량을 낮추기 위해 이것이 올바른 방법인지 확인하려고했습니다. – Katushai
문자열 만 저장하면 메모리 사용에 문제가 없어야한다고 생각하지 않습니다. 나는 확실하지 않지만 같은 시간에 100 개의 알람을 저장하는 사람들을 보지 못한다 :) Happy Coding! – Yan
고유 키를 사용하지 않고 사전에 여러 인스턴스를 저장하려면 어떻게해야합니까? 그것을 할 수있는 방법이 있습니까? – Katushai