NSMutableDictionary SetObject:ForKey:没有插入NSDictionary对象



这几天我一直被这个问题难住了,我对objective-c有点陌生。

我在NSUserDefaults中保存了最多3个NSDictionary对象,键为"one", "two"one_answers"three"(字典的所有内容都是nsstring,所以它们保存在NSUserDefaults中应该没问题)。

我试图在视图出现时将这三个nsdictionary加载到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

从注释(nlog)中,我们可以看到字典存在于NSUserDefaults中,但是它们没有被添加到serverDict中。

任何帮助将不胜感激!!我还在学习objective-c的阶段……

谢谢! !

我希望你没有忘记分配/init serverDict某处?

您需要使用self。serverDict无处不在,而不是serverDict,除非在dealloc中释放它,因为它被定义为属性。还要确保alloc和init self。在您使用self.serverDict之前(我假设您已经使用了,但没有使用self.serverDict)

最新更新