NSMutableDictionary SetObject:ForKey: 未插入 NSDictionary 对象

发布于 2024-12-18 09:10:03 字数 1624 浏览 3 评论 0原文

最近几天我一直被这个问题难住了,我对 Objective-C 有点陌生。

我在 NSUserDefaults 中保存了最多 3 个 NSDictionary 对象,其键为“一”、“二”和“三”(字典的所有内容都是 NSString,因此应该可以将它们保存在 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 中。

任何帮助将不胜感激!我还处于 Objective-C 的学习阶段...

谢谢!!

I've been stumped with this for the last few days, I'm a bit new to objective-c.

I have up to 3 NSDictionary objects saved in the NSUserDefaults with keys "one", "two", and "three" (All contents of the dictionaries are NSStrings, so it should be ok that they're saved in the NSUserDefaults).

I am trying to load these three NSDictionaries into a NSMutableDictionary when a view apears, but for some reason they're not being added in.

@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
     }
}

This is in the .h file

@interface FavoritesViewController : UITableViewController <UITableViewDelegate, UITableViewDataSource> {
    ...
    NSMutableDictionary *serverDict;
}
@property (nonatomic, retain) NSMutableDictionary *serverDict;

@end

From the comments (NSLogs), we can see that the dictionaries exist in the NSUserDefaults, but they're not being added into serverDict.

Any help would be appreciated!! I'm still in the learning phase of objective-c...

Thanks!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

玻璃人 2024-12-25 09:10:03

我希望你没有忘记在某个地方分配/初始化 serverDict ?

I hope you didn't forget to alloc/init serverDict somewhere?

才能让你更想念 2024-12-25 09:10:03

您需要在任何地方使用 self.serverDict 而不是 serverDict ,除非在 dealloc 中释放它,因为它被定义为属性。还要确保在使用 self.serverDict 之前分配并初始化它(我假设您已经分配并初始化了 self.serverDict,但没有使用 self.serverDict)。

You need to use self.serverDict everywhere instead of serverDict except when releasing it in dealloc as it is defined as a property. Also make sure you alloc and init self.serverDict before you use it (I'm assuming you already are, but not using self.serverDict).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文