如何将字典的 NSDictionary 添加到 NSArray?

Posted

技术标签:

【中文标题】如何将字典的 NSDictionary 添加到 NSArray?【英文标题】:How to add NSDictionary of dictionaries to NSArray? 【发布时间】:2013-07-15 16:21:35 【问题描述】:

我有一本字典。这是我的主要字典的结构:

The content of dictionary(
        
        mondaysSales=     
        totalSale = "1234.99";
    ,
        tusdaySales= 
        totalSale = "1234.99";
    ,
        wednesdaySale=
        totalSale = "1234.99";
    ,
        thursdaySale
        totalSale = "1234.99";
    ,
        fridaySale
        totalSale = "1234.99";
    
)

但我想将每一天与日期键添加到数组中。例如:

这将是数组的条目之一:

        fridaySale
        totalSale = "1234.99";
    

你们中的任何人如何做到这一点?,我将非常感谢您的帮助。

【问题讨论】:

看起来你有一个字典数组... Jacky Boy 所说的——你有一组单元素字典。您可能需要修复创建它的代码。 【参考方案1】:

您可以遍历字典并将其添加到数组中。请注意,字典没有排序,您可能不会在工作日得到正确的顺序

NSMutableArray *array = [@[] mutableCopy]
for (NSString* key in dictionary) 
    id value = [dictionary objectForKey:key];
    [array addObject:value];

【讨论】:

在这种情况下,我只会得到这个 totalSale = "1234.99"; 失去星期几 2 件事。 1) [dictionary allKeys] 2) 另一个事实是 op 所拥有的不是字典,而是 NSArray【参考方案2】:

为什么不创建一个新的对象类型并将其添加到数组中?

StorageObject.h:

@interface StorageObject:NSObject
@property (nonatomic, retain) NSString *day;
@property (nonatomic, retain) NSString *saleType;
@property (nonatomic, retain) NSNumber *saleValue;
@end

StorageObject.m:

@implementation StorageObject
@synthesize
day = _day,
saleType = _saleType,
saleValue = _saleValue;

- (void)dealloc

    [_day release];
    [_saleType release];
    [_saleValue release];
    [super dealloc];

@end

现在只需使用以下命令遍历您的 NSDictionary:

for(NSString *key in [dictionary1 allKeys])

    NSDictionary *innerDictionary = [dictionary1 objectForKey:key];


对于该循环中返回的每个字典,实例化您的自定义存储对象并将其添加到数组中。

【讨论】:

【参考方案3】:

我想出了解决办法:

NSMutableDictionary *tempDict=[[NSMutableDictionary alloc]init];
[tempDict setObject:[mainDic objectForKey:key] forKey:key];
[myArray addObject:tempDict];

【讨论】:

【参考方案4】:

假设你有一本字典:

你可以的

NSMutableArray *list = [@[] mutableCopy]; 

for (NSString *key in [mainDictionary allKeys]) 
    NSDictionary *dict =  @ 
                        key :  [mainDictionary objectForKey:key],   
                           ;
    [list addObject:dict];

【讨论】:

【参考方案5】:

有一个简单的方法可以做到这一点,只是不要创建一个 NSDictionary 而是创建一个 NSArray,通过执行以下操作

NSArray *Array = @[@@"friday sale, totalSale" : @"1234.99"]

或者,如果您想从其中的其他任何内容中获取细节。

NSInteger value = 1;
NSArray *Array = @[@ @"Friday sale, totalSale" : [NSString stringWithFormat:@"%ld", (long)value]];

然后你可以通过简单的说得到这个值,

NSString *somestring = Array["Friday sale, totalSale"];

【讨论】:

以上是关于如何将字典的 NSDictionary 添加到 NSArray?的主要内容,如果未能解决你的问题,请参考以下文章

从 NSDictionary 检索数据

如何检查 NSDictionary 中的值是不是存在于字典数组中

如何从 NSDictionary 中删除对象

如何使用 NSManagedObject 将 NSDictionary 保存到 CoreData?

如何使用 Swift 将新数组数据添加到 plist 文件中的 NSDictionary

Objective-C 将字典附加到 NSDictionary