gpt4 book ai didi

iphone - NSUserDefaults 不会保存 NSDictionary

转载 作者:行者123 更新时间:2023-12-03 20:18:19 26 4
gpt4 key购买 nike

我正在编写一个使用 NSUserDefaults 作为数据存储机制的应用程序,并且在尝试保存数据(符合属性列表协议(protocol))时遇到问题:

+ (BOOL)storeAlbum:(Album *)album
{
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSMutableDictionary *albums = (NSMutableDictionary *)[prefs objectForKey:@"my_adventure_book_albums"];
NSLog(@"Existing albums: %@",albums);
if (!albums)
albums = [NSMutableDictionary dictionaryWithObject:album forKey:@"album"];
else
[albums setObject:album forKey:@"album"];
NSLog(@"%@",album);
[prefs setObject:albums forKey:@"my_adventure_book_albums"];
return [prefs synchronize];
}

我得到这个输出:

2010-06-29 17:17:09.929 MyAdventureBook[39892:207] Existing albums: (null)
2010-06-29 17:17:09.930 MyAdventureBook[39892:207] test
2010-06-29 17:17:09.931 MyAdventureBook[39892:207] *** -[NSUserDefaults setObject:forKey:]: Attempt to insert non-property value '{
album = test;
}' of class 'NSCFDictionary'.

相册的描述方法如下:

- (NSString *)description
{
// Convert to a NSDictionary for serializing
if (!title) title = @"";
if (!date) date = [NSDate dateWithTimeIntervalSinceNow:0];
if (!coverImage) coverImage = @"";
if (!images) images = [[NSArray alloc] initWithObjects:@"",nil];

//NSDictionary *dict = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:title,date,coverImage,images,nil] forKeys:[NSArray arrayWithObjects:@"title",@"date",@"coverImage",@"images",nil]];
//NSDictionary *dict = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:title,nil] forKeys:[NSArray arrayWithObjects:@"title",nil]];
//return [dict description];
return @"test";
}

所有注释掉的行都有相同的结果,所以我只是决定看看 NSString“测试”是否有效,但它(当然)不行。

最佳答案

但是您放入字典中的对象 Album* 很可能不是属性列表对象,是吗?每个对象,一直向下,都需要是一个属性列表对象才能工作。 description 方法不足以实现这一点。

作为解决方法,您可以使用 NSCodingNSKeyedArchiver 将字典写入 NSData,您可以将其存储在偏好。

关于iphone - NSUserDefaults 不会保存 NSDictionary,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3144860/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com