0

これは、plistが生のように見えるものです:

{
    authorLastName = Doe;
    authorFirstName = Jane;
    imageFilePath = "NoImage.png";
    title = "Account Test 1";
    year = 2009;
},
{
    authorLastName = Doe;
    authorFirstName = John;
    imageFilePath = "NoImage.png";
    title = "Account Test 2";
    year = 2009;
},

plist の合計項目を数えて、「4 アカウント」のように表示したい。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                     NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *myPlistPath = [documentsDirectory
                         stringByAppendingPathComponent:@"Accounts.plist"]; 
NSDictionary *plistDict = [[NSDictionary alloc] initWithContentsOfFile:myPlistPath]; 

NSArray *array = [[plistDict objectForKey:0]
                      sortedArrayUsingSelector:@selector(compare:)]; 

return([NSString stringWithFormat:@"%d Accounts", [array count]]);

ただし、結果は 0 を返します。辞書内のアイテムの量を返すようにしたいです。

4

3 に答える 3

1

return ステートメントは、辞書自体の項目数ではなく、辞書の最初の要素の項目数を中継しています。代わりに、あなたが望むものは次のようなものだと思います:

return [NSString stringWithFormat:@"%d Accounts", [plistDict count]];
于 2009-09-10T16:36:16.073 に答える
0

これは、読み取り専用形式としてサポートされている古いOpenStepプロパティリストのようです。

NSDictionaryオブジェクトをキーとしてのみ取得することを除いて、コードは問題ないように見えます。そのため、" [plistDict objectForKey:0]"は期待どおりに機能しません。プロパティリストの最上位が配列であることがわかっている場合は、それをでNSArrayはなく、に割り当てNSDictionaryます。実際に辞書である場合は、キーに0ではなく文字列値を使用します。

于 2010-12-27T02:20:33.620 に答える
0

どう[plistDict count]ですか?ディクショナリへのキーとして渡しているため、キーまたは値として0使用できないため、何も返されません。nil

于 2009-09-10T16:37:04.387 に答える