여러 개의 키 - 값을 추가해야하므로 NSMutableDictionary를 사용하여 "즐겨 찾기에 추가"기능을 구현하려고합니다. 다음 addToFavourites 메서드는 사전에 객체를 추가 한 후에도 항상 Count = 0을 표시합니다. this을 읽고 nsdefaults를 mutableictionary (변경 가능한 배열 대신)로 가져 와서 결과 사전을 nsdefaults로 다시 설정했지만 문제가 무엇인지 확실하지 않습니다. 어떤 도움이라도 대단히 감사 할 것입니다. 고맙습니다.iPhone : NSMutableDictionary를 NSUserDefaults에 저장할 수 없습니다.
편집 : this 내가 변경 가능하고 변경할 수없는 사전 주위로 데이터를 이동해야한다는 것을 알게되었고, 그 다음 정상적으로 작동했습니다. 그러나 여전히 수정 된 NSMutableDictionary를 NSUserDefaults와 동기화 할 수는 없습니다.
-(BOOL)isAddedToFavorites:(NSString*)viewID {
NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
NSMutableDictionary *favourites = [[standardUserDefaults objectForKey:kFavouriteItemsKey] mutableCopy];
if(favourites && [[favourites objectForKey:kFavouriteItemsKey] objectForKey:viewID])
return YES;
return NO;
}
-(void)addToFavourites:(NSString*)viewID viewType:(NSString*)viewType {
NSMutableDictionary *myMutableDictionary= [NSMutableDictionary dictionaryWithCapacity:[myDictionary count]+1];
[myMutableDictionary addEntriesFromDictionary:myDictionary];
[myMutableDictionary setObject:myObject forKey:myKey];
// Modified dictionary is not getting synced
[[NSUserDefaults standardUserDefaults] setObject:myMutableDictionary forKey:kFavouriteItemsKey];
[[NSUserDefaults standardUserDefaults] synchronize];
}
사전 데이터를 NSData로 시도했으나 심각하지 않은 부분을 수정 한 후 작동했습니다.
-(BOOL)isAddedToFavorites:(NSString*)viewID {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData *data = [defaults objectForKey:kFavouriteItemsKey];
NSDictionary *favourites = [NSKeyedUnarchiver unarchiveObjectWithData:data];
if(favourites && [favourites objectForKey:viewID])
return YES;
return NO;
}
-(void)addToFavourites:(NSString*)viewID viewType:(NSString*)viewType {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData *data = [defaults objectForKey:kFavouriteItemsKey];
NSDictionary *myDictionary = [NSKeyedUnarchiver unarchiveObjectWithData:data];
NSMutableDictionary *myMutableDictionary= [NSMutableDictionary dictionaryWithCapacity:[myDictionary count]+1];
[myMutableDictionary addEntriesFromDictionary:myDictionary];
[myMutableDictionary setObject:viewType forKey:viewID];
NSData *newdata = [NSKeyedArchiver archivedDataWithRootObject:myMutableDictionary];
[[NSUserDefaults standardUserDefaults] setObject:newdata forKey:kFavouriteItemsKey];
[[NSUserDefaults standardUserDefaults] synchronize];
}
감사합니다.
This http://stackoverflow.com/questions/471830/why-nsuserdefaults-failed-to-save-nsmutabledictionary-in-iphone-sdk는 중복 된 것으로 보입니다. 도움이 되나요? – phi
이것은 실제로 AppleDeveloper가 문자열을 저장하고 있고 여전히 문제가있는 것처럼 보입니다. – Joe
@ 아이랜드 : 사전 값을 인코딩하려고했지만 여전히 작동하지 않습니다! 편집 된 질문보기! 인코딩 사전의 – applefreak