1

私は1つのplistファイルを持っていて、それを解析してその内容をNSArrayにコピーしたいと思っています。そのために使用しているコードです。

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

NSString *documentsPath = [paths objectAtIndex:0];

NSString *fooPath = [documentsPath stringByAppendingPathComponent:@"myfirstplist.plist"];
NSLog(fooPath);
self.myArray = [[NSArray arrayWithContentsOfFile:fooPath] retain];
NSLog(@"%@",myArray);

今、問題は非常に奇妙です.myArrayコンテンツを印刷すると、ファイルデータが印刷される場合と印刷されない場合があります。

URL をパスとして使用しても、同じ問題に直面しています。

self.myArray = [[NSArray arrayWithContentsOfURL:URlPath] retain];

理由は何でしょう?

前もって感謝します。

4

5 に答える 5

4

最初に .plist を生成した方法によっては、それを配列として読み戻そうとすると問題が発生する場合があります。plist を読み取る最も安全な方法は、NSPropertyListSerialization クラスを使用することです: Apple Doc.

于 2008-12-01T11:53:24.090 に答える
1

パスを取得するには

NSString *plistPath = [bundle pathForResource:  @"file-name" ofType:@"plist"];

そして、それを使用してください

NSArray *phrase2 = [NSArray arrayWithContentsOfFile: plistPath]; 
NSLog (@"%@", phrase2); 
于 2010-01-27T01:00:55.897 に答える
1
NSBundle *bundle = [NSBundle mainBundle]; 

NSString *plistPath = [bundle pathForResource:  @"file-name" ofType:@"plist"]; 

NSArray *phrase2 = [NSArray arrayWithContentsOfFile: plistPath];

NSLog (@"%@", phrase2); 
于 2010-01-27T01:09:47.563 に答える
0

これは非常にばかげた間違いでした
。「myarray」プロパティを「保持および非アトミック」と宣言し、解析操作中に再び保持しています。

self.myArray = [[NSArray arrayWithContentsOfURL:URlPath] retain];

私はそれを保持したがリリースしなかったことを意味します。それがその奇妙な問題があった理由です。

乾杯。

于 2008-12-01T23:21:45.450 に答える
0

writeToFile:atomically :でファイルを生成していますか? これがtrueを返すことを確認しますか?

于 2008-12-01T05:09:07.370 に答える