3

さて、これについて別の目が必要なだけかもしれませんが、ビューコントローラーの1つに次のコード行があります。ファイルからデータを取得し、「\n」をセパレータとして使用して配列に入力します。次に、その配列を使用して NSDictionary を作成します。これは、テーブルビューの作成に使用されます。とても簡単です。しかし、それは機能していません。コードは次のとおりです。

NSString *dataString = [NSString stringWithContentsOfFile:checklistPath encoding: NSUTF8StringEncoding error:NULL];


    if ([dataString hasPrefix:@"\n"]) {
        dataString = [dataString substringFromIndex:1];

    }
    NSArray *tempArray = [dataString componentsSeparatedByString:@"\n"];
    NSLog(@"datastring:%@",dataString);
    NSLog(@"temp array:",tempArray);
    NSLog(@"%i",[tempArray count]);

    NSDictionary *temporaryDictionary = [NSDictionary dictionaryWithObject: tempArray forKey:@"User Generated Checklist"];
    self.names = temporaryDictionary;
            NSLog(@"names:%@",names);

ログでは、データ文字列が正しいため、ファイルからデータを正しくプルしています。ただし、tempArray の場合は次のようになります。

2010-05-17 19:15:55.825 MyApp[7309:207] temp array:

tempArray カウントについては、次のように取得します。

2010-05-17 19:15:55.826 myApp[7309:207] 5

これは、配列内の文字列の正しい数です

だから私は困惑しています。別のView Controllerにまったく同じ数行のコードがあり、完全に機能します。一番クレイジーなのは最後の NSLog で、最終的な NSDictionary (names) がこれを表示します。これは正しく見えます:

2010-05-17 19:15:55.827 FS Companion[7309:207] names:{
    "User Generated Checklist" =     (
        "System|||ACTION",
        "System|||ACTION",
        "System|||ACTION",
        "System|||ACTION",
        "System|||ACTION"
    );

\

本当に明らかな何かが欠けていますか??

4

2 に答える 2

2

一時配列を出力する NSLog ステートメントには書式指定子がありません。

于 2010-05-18T01:34:38.253 に答える
1

tempArray をログに記録する文字列に変数がありません。

次のようになります。

NSLog([NSString stringwithformat:@"temp array: %@",tempArray]);
于 2010-05-18T01:33:30.627 に答える