mav*_*ane 20 objective-c nsuserdefaults nsmutablearray property-list ios
嗨我正在尝试从餐馆对象创建一个fourates列表,我的应用程序有一个不同的餐厅列表,我希望能够为用户添加有利的餐厅,这个代码不起作用
- (IBAction)toggleFav:(id)sender {
Restaurant *resto = [self restaure];
NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];
[dic setObject:resto.price forKey:@"restoPrice"];
[dic setObject:resto.restaurantId forKey:@"restaurantId"];
[dic setObject:resto.restoAbout forKey:@"restoAbout"];
[dic setObject:resto.restoAddress forKey:@"restoAddress"];
[dic setObject:resto.restoBeverages forKey:@"restoBeverages"];
[dic setObject:resto.restoCategory forKey:@"restoCategory"];
[dic setObject:resto.restoEmail forKey:@"restoEmail"];
[dic setObject:resto.restoLogo forKey:@"restoLogo"];
[dic setObject:resto.restoName forKey:@"restoName"];
[dic setObject:resto.restoPhone forKey:@"restoPhone"];
[dic setObject:resto.restoCity forKey:@"restoCity"];
NSArray *dicArray = [dic allKeys];
if([sender isSelected]){
//...
[sender setSelected:NO];
NSMutableArray *array = [[[NSUserDefaults standardUserDefaults] objectForKey:@"restoName"] mutableCopy];
[array removeObject:dicArray];
[[NSUserDefaults standardUserDefaults] setObject:array forKey:@"restoName"];
} else {
//...
[sender setSelected:YES];
NSMutableArray *array = [[[NSUserDefaults standardUserDefaults] objectForKey:@"restoName"] mutableCopy];
[array addObject:dicArray];
[[NSUserDefaults standardUserDefaults] setObject:array forKey:@"restoName"];
[[NSUserDefaults standardUserDefaults] synchronize];
//NSLog(@"%@",[[NSUserDefaults standardUserDefaults] stringForKey:@"restoName"]);
}
}
Run Code Online (Sandbox Code Playgroud)
''class'_NSCFArray'.请注意,属性列表中的字典和数组也必须仅包含属性值.
Gen*_*ode 58
如果您不想打扰确保所有字典值都是属性列表类型,那么您只需将字典转换为NSData,
NSUserDefaults *def = [NSUserDefaults standardUserDefaults];
[def setObject:[NSKeyedArchiver archivedDataWithRootObject:self.myDictionary] forKey:@"MyData"];
[def synchronize];
Run Code Online (Sandbox Code Playgroud)
并从沙箱返回字典:
NSUserDefaults *def = [NSUserDefaults standardUserDefaults];
NSData *data = [def objectForKey:@"MyData"];
NSDictionary *retrievedDictionary = [NSKeyedUnarchiver unarchiveObjectWithData:data];
self.myDictionary = [[NSDictionary alloc] initWithDictionary:retrievedDictionary];
Run Code Online (Sandbox Code Playgroud)
希望这有助于某人.:d
附加说明:如果您正在获取可变字典或可变数组,请记住使用"mutableCopy"方法.否则,您无法从检索到的字典/数组中添加或删除对象.例如:
NSMutableDictionary *retrievedDictionary =
[[NSKeyedUnarchiver unarchiveObjectWithData:data] mutableCopy];
Run Code Online (Sandbox Code Playgroud)
要么
NSMutableArray *retrievedArray =
[[NSKeyedUnarchiver unarchiveObjectWithData:data] mutableCopy];
Run Code Online (Sandbox Code Playgroud)
Cat*_*Man 18
您只能在NSUserDefaults中存储属性列表类型(数组,数据,字符串,数字,日期,字典)或URL.您需要将模型对象转换为那些.
归档时间: |
|
查看次数: |
30910 次 |
最近记录: |