0

私は方法を持っています:

#define ROOT_ASSETS_PATH @"/assets/"

...

-(NSMutableDictionary*) getContentsOfPlist{
    NSString *pageContentPlistPath = [[[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent: ROOT_ASSETS_PATH] stringByAppendingPathComponent:@"content.plist"];

    NSMutableDictionary *mDictionary = [NSMutableDictionary dictionaryWithContentsOfFile:pageContentPlistPath];
    return mDicitonary;
}

シミュレーターで。これは辞書を返します。iPad では nil を返します。拡張機能の大文字と小文字が通話でも一致することを確認しました。

何か案は?

4

4 に答える 4

2

結局、問題はケースでした。ファイル名の大文字と小文字が、パラメーターに入力した大文字と小文字が一致しませんでした。OSX は気にしませんが、iPad は気にします。

于 2013-10-30T15:09:52.303 に答える
0

また、次を使用することをお勧めします。

[NSPropertyListSerialization propertyListWithData:options:format:error:]

NSDictionary を直接初期化する代わりに。何かが失敗した場合、適切なエラーが返されるはずです。

于 2013-10-30T14:56:51.360 に答える
0
+ (id)dictionaryWithContentsOfFile:(NSString *)path

パラメーター

完全または相対パス名。パスで識別されるファイルには、ルート オブジェクトがディクショナリであるプロパティ リストの文字列表現が含まれている必要があります。

戻り値

path の辞書を含む新しい辞書。ファイル エラーがある場合、またはファイルの内容が辞書の無効な表現である場合は nil。

したがって、ファイルへのフル パス (または適切な相対パス) を設定する必要があります。

アプリ バンドルはシミュレーターでは読み書き可能ですが、デバイスでは読み取り専用であることに注意してください。

于 2013-10-30T14:56:58.260 に答える
0

#define のスラッシュを削除してみてください。stringByAppendingPathComponent がスラッシュを追加します。これがシミュレーターで機能する理由がわかりません。

于 2013-10-30T14:54:09.067 に答える