Objective c 阅读嵌套的NSMutableDictionary的内容?

Objective c 阅读嵌套的NSMutableDictionary的内容?,objective-c,loops,for-loop,nsarray,nsmutabledictionary,Objective C,Loops,For Loop,Nsarray,Nsmutabledictionary,看起来很简单-我正在创建一个主NSMutableDic,并用更多的NSMutableDic填充它 像这样查阅字典内容的简单方法是什么? 虽然这不是Python,但可能是“taskDict[4]['assignedby']”之类的东西 下面是工作正常的代码: int counter = 0; NSArray *cols = [GetProjectInfo getTaskColumns]; NSArray *rows = [GetProjectInfo fetchAll:projectNa

看起来很简单-我正在创建一个主NSMutableDic,并用更多的NSMutableDic填充它

像这样查阅字典内容的简单方法是什么? 虽然这不是Python,但可能是“taskDict[4]['assignedby']”之类的东西

下面是工作正常的代码:

int counter = 0;

NSArray *cols = [GetProjectInfo getTaskColumns];    
NSArray *rows = [GetProjectInfo fetchAll:projectName];

NSMutableDictionary *taskDict = [NSMutableDictionary dictionary];
NSMutableDictionary *localDict = [NSMutableDictionary dictionary];

for (int x=0; x < rows.count; x++) {

    NSString *rowData = [rows objectAtIndex:x];

    NSString *colData = [cols objectAtIndex:counter];

    //Assign the values colData(key) and rowData(value) into localDict.
    [localDict setValue:rowData forKey:colData];

    counter ++;

    if (counter >= cols.count) {

        counter = 0;

        //Add the whole localDict to the global dictionary (taskDict)
        [taskDict setObject:localDict forKey:localDict];

        //Reset the localDict so that we can populate it with the next set 
        [localDict removeAllObjects];
    }
}

NSLog(@"%@",taskDict);

有人愿意向这个方向提出一些想法吗

这并不能直接回答你的问题;但是,您是否可以使用
NSObject
子类来封装数据,从而不必遍历字典的层次结构,而不是将对象图存储为嵌套字典?例如,(请注意,我对应用程序的模型层一无所知…)您是否可以将概念模型分解为项目和任务对象,例如

@interface Task : NSObject <NSCoding>
{
    NSString *_name;
    NSString *_owner;
    NSString *_assignedBy;
    BOOL _complete;
    NSDate *_timeAssigned;
    //  etc.
}
@接口任务:NSObject
{
NSString*\u名称;
NSString*\u所有者;
NSString*\指定人;
布尔完成;
NSDate*\指定的时间;
//等等。
}
然后,项目又由任务组成:

@interface Project : NSObject <NSCoding>
{
    NSString *_name;
    NSString *_dateStarted;
    NSMutableArray *_tasks;
    //  etc.
}
@接口项目:NSObject
{
NSString*\u名称;
NSString*\u日期开始;
NSMutableArray*_任务;
//等等。
}

这是构建应用程序模型层的一种更面向对象的方法。只要您的类符合
NSCoding
协议,这种机制就不会阻止您将数据序列化到plist。

很难告诉您的
NSMutableDictionary
实例是如何组成的;但是,通过在对象图中结构化数据而不是使用
NSDictionary
来更好地解决这个问题吗?在本文的结尾,我计划创建一个plist,然后将其用作存储形式和填充视图的方法。你把数据组织成对象图是什么意思?啊,是的,这是一种更好的方法。我试图在我的方法中走一些弯路,以得到一个快速的原型,但我会尝试这样做。谢谢你的建议。
@interface Project : NSObject <NSCoding>
{
    NSString *_name;
    NSString *_dateStarted;
    NSMutableArray *_tasks;
    //  etc.
}