最近几天我对此感到困惑,我对Objective-C有点陌生。
我最多有3个NSDictionary对象保存在NSUserDefaults中,它们的键为“一个”,“两个”和“三个”(字典的所有内容均为NSStrings,因此可以将它们保存在NSUserDefaults中是可以的)。
我试图在视图终止时将这三个NSDictionaries加载到NSMutableDictionary中,但是由于某些原因未将它们添加进来。
@synthesize serverDict;
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[serverDict removeAllObjects];
NSDictionary *favs;
NSArray *serverList = [NSArray arrayWithObjects:@"one",@"two",@"three", nil];
for (id server in serverList) {
favs = [[NSUserDefaults standardUserDefaults] dictionaryForKey:server];
if ((favs != nil) && ([favs count] != 0)) {
[serverDict setObject:favs forKey:server];
NSLog(@"server:%@, objects in server:%d",server, [favs count]);
//This outputs:
//"server:one, objects in server:2"
//"server:three, objects in server:2"
}
}
NSLog(@"[serverDict count] = %d", [serverDict count]);
//This outputs:
//"[serverDict count] = 0"
for (id key in serverDict) {
NSLog(@"serverDict key: %@, value: %@", key, [serverDict objectForKey:key]);
//No Output here
}
}
这是在.h文件中
@interface FavoritesViewController : UITableViewController <UITableViewDelegate, UITableViewDataSource> {
...
NSMutableDictionary *serverDict;
}
@property (nonatomic, retain) NSMutableDictionary *serverDict;
@end
从注释(NSLogs)中,我们可以看到字典存在于NSUserDefaults中,但是没有将它们添加到serverDict中。
任何帮助,将不胜感激!!我仍处于目标学习阶段。
谢谢!!
最佳答案
您需要在各处使用self.serverDict而不是serverDict,除非在dealloc中将其释放是因为它被定义为属性。还要确保在使用self.serverDict之前先对其进行分配和初始化(我假设您已经在使用,但不使用self.serverDict)。