如何将字典的 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 中的值是不是存在于字典数组中
如何使用 NSManagedObject 将 NSDictionary 保存到 CoreData?