1

私のアプリでは、いくつかの情報を plist ファイルに保存しています。このコードでこのplistを生成しました:

- (void)saveArrayToFile {
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *fileName = [documentsDirectory stringByAppendingPathComponent:@"objects.plist"];
    [self.reportArray writeToFile:fileName atomically:YES];
}

アプリケーション iExplorer を使用して、作成したアプリ内を調べて、作成したファイルを見つけました。次に、ファイルを読み戻す必要があります。このplistファイルを読み取ることができるいくつかのソリューションをWebで見つけたので、このソリューションを試しました:

- (void)loadObjectFromFile {
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES);
    NSString *documentsDir = [paths objectAtIndex:0];
    NSString *path = [documentsDir stringByAppendingString:@"objects.plist"];
    NSArray *temp = [NSArray arrayWithContentsOfFile:path];
    NSLog(@"%@", temp);
}

しかし、Xcode でコンソールを見ると、plist ファイルのコンテンツのログが表示されません。正確には次のようになります。

2013-10-17 10:29:34.586 MyApp[233:60b] (null)

ここに私のplistファイルの内容を貼り付けますので、そこに保存されている情報を読み返すのを手伝ってくれるかもしれません.plistファイルの内容は次のとおりです:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
    <dict>
        <key>desc</key>
        <string>Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda.</string>
        <key>name</key>
        <string>Dadi rossi</string>
        <key>price</key>
        <string>5 €&lt;/string>
    </dict>
</array>
</plist>

私のソリューションの何が問題になっていますか? plist ファイルの内容を読み取れないのはなぜですか? ありがとうございました!

4

1 に答える 1

2

あなたの間違いはここの最初の行にあります

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES);

NSDocumentationDirectoryにデータを保存しているときに、からデータを読み取っていますNSDocumentDirectory。次の行に置き換えるだけです。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

ここでの 2 番目の間違い PathComponent 置換の代わりに文字列を追加する

NSString *path = [documentsDir stringByAppendingString:@"objects.plist"];

NSString *fileName = [documentsDirectory stringByAppendingPathComponent:@"objects.plist"];
于 2013-10-17T08:53:51.040 に答える