如何创建动态 NSDictionary 来存储具有多个键的多个 URL?

How to create dynamic NSDictionary to store multiple URLs with multiple keys?

我想用名称、网站名称和 rssfeed url 存储多个 url。 如何将其存储在字典中?

喜欢,

我的关键是,@"nameoffeed", @"websitename", @"urlfeedname" 我想将所有存储在与 url 相关的字典中。 就像用户搜索 3 feed 然后 name , websitename 和 urlfeed 都存储在 NSDictionary 中?

我该怎么做?

我正在使用它,但它只存储 1 个值。

  //newdevice1 is my nsmanageobject
 NSArray *keys = [[[newDevice1 entity] attributesByName] allKeys];
                        NSDictionary *singledict = [newDevice1 dictionaryWithValuesForKeys:keys];

我需要字典中的这种类型的结果。

{
    nameoffeed = "cnn" ;
    websitename = "www.cnn.com";
    urlfeedname = "www.cnn.com/feed";

     nameoffeed = "nytimes" ;
    websitename = "www.nytimes.com";
    urlfeedname = "www.nytimes.com/feed";
}

你可以通过这种方式完成。

NSDictionary *dic = @{@"nameoffeed":@"cnn",@"websitename":@"www.cnn.com",@"urlfeedname":@"www.cnn.com/feed"};
NSDictionary *dic2 = @{@"nameoffeed":@"nytimes",@"websitename":@"www.nytimes.com",@"urlfeedname":@"www.nytimes.com/feed"};
NSArray *dicArray = @[dic,dic2];

在字典中我们可以保存或存储多个键 values.But 它必须是不同的 key.The 键名不能是 same.If 使用在字典中存储相同的键名,它向您显示错误或您的应用程序 crashes.But 您可以在 dictionary.You 中使用相同的值必须存储具有多个相同值的不同键名。

您可以将字典集保存到如下数组中

NSDictionary *dictFirstSet = [[NSDictionary alloc]initWithObjectsAndKeys:@"cnn",@"nameoffeed",@"www.cnn.com",@"websitename",@"www.cnn.com/feed",@"urlfeedname",nil];
NSDictionary *dictSecondSet = [[NSDictionary alloc]initWithObjectsAndKeys:@"nytimes",@"nameoffeed",@"www.nytimes.com",@"websitename",@"www.nytimes.com/feed",@"urlfeedname",nil];
NSArray *arrayDict = [[NSArray alloc]initWithObjects:dictFirstSet,dictSecondSet,nil];
NSLog(@"The arrayDict is - %@",arrayDict);

输出为

  The arrayDict is - (
    {
    nameoffeed = cnn;
    urlfeedname = "www.cnn.com/feed";
    websitename = "www.cnn.com";
},
    {
    nameoffeed = nytimes;
    urlfeedname = "www.nytimes.com/feed";
    websitename = "www.nytimes.com";
}
) 

My key is , @"nameoffeed", @"websitename", @"urlfeedname" I want to store all in dictionary related to url . Like user search 3 feed then name , websitename and urlfeed all are stored in NSDictionary ?

基于此,我相信你想要一个字典的字典,其中每个子字典都由名称索引。

在您的示例中,您已经使用 dictionaryWithValuesForKeys.

为单个对象创建了字典

您需要做的就是通过 url 键将每个词添加到字典中。

首先,您需要一个可变字典来将项目添加到...

NSMutableDictionary *byURL = [[NSMutableDictionary alloc] init];

然后,对于每个项目,获取 "url" 您将用作键...

NSString *name = [newDevice1 valueForKey:@"nameoffeed"];

并将值添加到字典

if (name) {
    NSArray *keys = [[[newDevice1 entity] attributesByName] allKeys];
    byURL[name] = [newDevice1 dictionaryWithValuesForKeys:keys];
}

然后您可以对每个对象执行相同的操作,生成一个字典,您可以在其中通过 url.

查找每个对象
NSDictionary *d = byURL[@"cnn"];

将为您提供包含 "cnn"

的所有 key/value 对的字典

如果你想最终得到一个严格用于搜索的不可变字典(在添加你想添加的所有内容之后),你可以创建一个不可变副本...

NSDictionary *objectsByURL = [byURL copy];