我有两个NSMutableArray
。它们由图像或文本组成。数组通过UITableView
显示。当我关闭应用程序时,UITableView
中的数据会丢失。如何使用NSUserDefault
在UITableView
中保存数组
发布于 2013-10-28 20:15:26
你可以这样保存你的可变数组:
[[NSUserDefaults standardUserDefaults] setObject:yourArray forKey:@"YourKey"];
[[NSUserDefaults standardUserDefaults] synchronize];
稍后,您将从用户默认设置中恢复可变数组。如果您想在以后编辑数组,获得可变副本是很重要的。
NSMutableArray *yourArray = [[[NSUserDefaults standardUserDefaults] arrayForKey:@"YourKey"] mutableCopy];
然后,您只需通过UITableView
委托从可变数组设置UITableview
数据
希望这能有所帮助!
发布于 2013-10-28 21:18:32
我只想补充一下其他答案,你要存储在NSUserDefault
中的对象,如苹果文档中所报道的,必须符合以下内容:
value参数只能是属性列表对象:NSData
、NSString
、NSNumber
、NSDate、NSArray或NSDictionary。对于NSArray和NSDictionary对象,其内容必须是属性列表对象。
这里是到property list programming guide的链接
因此,请注意数组中的内容
发布于 2015-06-26 20:39:03
是否确实要将图像存储在属性列表中?您可以将图像保存到文件中,并将文件名存储为NSDictionary
中的值。
定义存储文件的路径
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
self.basePath = [paths firstObject];
存储和加载镜像:
- (NSString *)imageWithKey:(NSString)key {
NSString *fileName = [NSString stringWithFormat:@"%@.png", key]
return [self.basePath stringByAppendingPathComponent:fileName];
}
- (void)saveImage:(UIImage *)image withKey:(NSString)key {
NSData *imageData = UIImagePNGRepresentation(image);
[imageData writeToFile:[self imageWithKey:key] atomically:YES];
}
- (UIImage *)loadImageWithKey:(NSString)key { {
return [UIImage imageWithContentsOfFile:[self imageWithKey:key]];
}
您还可以将路径或索引存储在NSMutableDictionary
中
- (void)saveDictionary:(NSDictionary *)dictionary {
NSMutableDictionary *dictForSave = [@{ } mutableCopy];
for (NSString *key in [dictionary allKeys]) {
[self saveImageWithKey:key];
dictForSave[key] = @{ @"image" : key };
}
[[NSUserDefaults standardUserDefaults] setObject:dictForSave forKey:@"MyDict"];
}
- (NSMutableDictionary *)loadDictionary:(NSDictionary *)dictionary {
NSDictionary *loadedDict = [[NSUserDefaults standardUserDefaults] objectForKey:@"MyDict"];
NSMutableDictionary *result = [@{ } mutableCopy];
for (NSString *key in [loadedDict allKeys]) {
result[key] = [self imageWithKey:key];
}
return result;
}
在NSUserDefaults
中,你只能存储像NSString
,NSDictionary
,NSNumber
,NSArray
这样的简单对象。
您还可以使用符合NSCoding协议的NSKeyedArchiver/NSKeyedUnarchiver
来序列化对象。
https://stackoverflow.com/questions/19634426
复制相似问题