【问题标题】:how to create an array of NSDictionarys如何创建一个 NSDictionarys 数组
【发布时间】:2012-09-27 22:58:04
【问题描述】:

我想获取我存储到我的核心数据对象之一的信息,并将此数据存储到 NSDictionary 对象中的 NSArray,以便我可以将此数组发送到我的一个视图并显示表格视图中的数据。

但是我不太确定如何将NSDictionary 放入NSArray,这是我的获取请求,希望有人可以帮我将NSDictionary 放入NSArray..我不确定如何执行此操作,因为我是如何循环通过核心数据对象的。

// Test listing all FailedBankInfos from the store
        NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
        NSEntityDescription *entity = [NSEntityDescription entityForName:@"Manuf" inManagedObjectContext:context];
        [fetchRequest setEntity:entity];

        NSError *error; 

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

        NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];
        for (Manuf *manuf in fetchedObjects) {
            [tempManufacturerDictionary setObject:manuf.hasMod forKey:@"HASMOD"];
            [tempManufacturerDictionary setObject:manuf.isLocked forKey:@"ISLOCKED"];
            [tempManufacturerDictionary setObject:manuf.isReg forKey:@"ISREG"];
            [tempManufacturerDictionary setObject:manuf.main forKey:@"MAIN"];

            // How do I put the Dictionary above into an array?
        }

任何帮助将不胜感激。

【问题讨论】:

  • 您可以将字典添加到NSMutableArray 类型的对象中。

标签: iphone ios core-data nsarray nsdictionary


【解决方案1】:

您可以在进入循环之前实例化一个NSMutableArray,并在每次迭代期间声明一个新的NSMutableDictionary,如下所示:

    NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];
    NSMutableArray *array = [NSMutableArray array];
    for (Manuf *manuf in fetchedObjects) {
        NSMutableDictionary *tempManufacturerDictionary = [NSMutableDictionary dictionary];
        [tempManufacturerDictionary setObject:manuf.hasMod forKey:@"HASMOD"];
        [tempManufacturerDictionary setObject:manuf.isLocked forKey:@"ISLOCKED"];
        [tempManufacturerDictionary setObject:manuf.isReg forKey:@"ISREG"];
        [tempManufacturerDictionary setObject:manuf.main forKey:@"MAIN"];

        [array addObject:tempManufacturerDictionary];
    }

您还可以将获取请求的resultType 设置为NSDictionaryResultType,并首先从获取请求中获取字典数组。

【讨论】:

  • @HurkNburkS 希望它能帮到你!
  • 是的,感谢您现在检查它:P 我想它可能会加快速度。从我一直在做的测试来看,创建这本字典需要一到三秒钟的时间,而我在其中的统计数据量……
  • 对如何使用这个 resultType 有点迷失了。问题是我想也许我必须坚持我的做法,因为我创建了一个包含所有变量的核心数据对象类在其中声明。
  • @HurkNburkS 嗯,你可能还需要设置属性描述......我已经很久没有搞砸了!
  • @HurkNburkS 但是是的,使用 Logan 的答案非常简单 - 只需实例化一个 NSMutableArray 然后循环的每次迭代调用 addObject: 就可以了。
【解决方案2】:

就像你处理任何其他对象一样,使用addObject

您需要使用NSMutableArray,而不是普通的NSArray 才能添加元素。如果您严格需要不可变版本,您可以稍后将可变数组转换为普通数组。

【讨论】:

  • 但是既然我在看,我需要定义某种计数吗?每次都不彻底?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-01
相关资源
最近更新 更多