0

SOについてはこれについて多くの質問があることは知っていますが、どこで間違いを犯しているのかわかりません。余分な目が役立つことを願っています。plistがバンドルに含まれていて、docsディレクトリにもあり、データが含まれていることを確認しました。これは、plistが上部にあるアプリパッケージのスクリーンキャプチャです。

ここに画像の説明を入力してください

別のクラスからplistを渡し、それが正しいplistであることを確認しました。

これが私のコードです:

-(id)init {

    if (self = [super init]) {

        //set up the appTracker
        appTracker = [[OAI_AppTracker alloc] init];

        //set up a file manager and error container
        fileManger=[NSFileManager defaultManager];

        //docs directory path
        documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

        //track event
        appTracker.appEvent = @"File Manager initialized";
        [appTracker recordEvent];

    }

    return self;
}

- (NSDictionary* ) readPlist {

    NSError* error;

    //set up dictionary to hold our app data
    NSDictionary* appData;

    //set up destination path
    NSString* destinationPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@", plistToRead]];

    if ([fileManger fileExistsAtPath:destinationPath]){
        //read plist
        appData = [[NSDictionary alloc] initWithContentsOfFile:destinationPath];
    } else {

        //file doesn't exist so we have to move it to the doc folder
        NSString *sourcePath=[[[NSBundle mainBundle] resourcePath]stringByAppendingPathComponent:plistToWrite];
        [fileManger copyItemAtPath:sourcePath toPath:destinationPath error:&error];

        //now read the plist
        appData = [[NSDictionary alloc] initWithContentsOfFile:destinationPath];

    }

    NSLog(@"%@", appData);
    return appData;

}

私のログは、plistのデータの代わりにNULLを示しています。私が間違っていることについての助けに感謝します。

4

1 に答える 1

1

plistを読むには、次のようにしてみてください。

NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"PlistFileName" ofType:@"plist"];
NSDictionary *plistData = [[NSDictionary alloc] initWithContentsOfFile:plistPath];
于 2012-11-14T19:18:37.110 に答える