2012-03-14 20 views
0

私は1つのマスターNSMutableDicを作成し、それ以上のもので満たしています。ネストされたNSMutableDictionariesの内容を読み込みますか?

このような辞書の内容に簡単にアクセスするにはどうすればよいですか? これは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); 

返し何か:

  { 
    person = "Ryan"; 
    assignedby = jfreund; 
    complete = False; 
    timeassigned = "15:35:00"; 
} =  { 
}; 
    { 
    person = "Tim"; 
    assignedby = klang; 
    complete = True; 
    timeassigned = "16:59:07"; 
} =  { 
}; 

誰ケアこの方向にいくつかのアイデアをスローする

ここで結構な動作するコードですか?

+0

NSMutableDictionaryインスタンスがどのように構成されているかを知るのは少し難しいです。 'NSDictionary'で作業するのではなく、オブジェクトグラフでデータを構造化することで問題を解決することができます – FluffulousChimp

+0

最後に、plistの作成を計画していました。これをストレージの形式とビューの作成方法として使用しました。データをオブジェクトグラフに構造化するとどういう意味ですか? –

答えて

0

これはあなたの質問に直接答えません。オブジェクトグラフをネストされた辞書として保存するのではなく、NSObjectサブクラスを使用してデータをカプセル化し、辞書の階層を横断する必要はありませんか?たとえば、(あなたのアプリケーションのモデルレイヤーについては何も知らないのを忘れてはいけませんが...)、概念モデルをProjectやTaskオブジェクトに分割できますか?

@interface Task : NSObject <NSCoding> 
{ 
    NSString *_name; 
    NSString *_owner; 
    NSString *_assignedBy; 
    BOOL _complete; 
    NSDate *_timeAssigned; 
    // etc. 
} 

そしてプロジェクトは、今度は、タスクで構成されています

@interface Project : NSObject <NSCoding> 
{ 
    NSString *_name; 
    NSString *_dateStarted; 
    NSMutableArray *_tasks; 
    // etc. 
} 

これは、アプリケーションのモデル層を構成する複数のオブジェクト指向の方法です。クラスがNSCodingプロトコルに準拠している限り、データをplistにシリアル化することを妨げるこのメカニズムについては何もありません。

+0

ああ、これはもっと良いやり方です。クイックプロトタイプを手に入れようと思っていましたが、この方法で試してみてください。提案していただきありがとうございます。 –

関連する問題