2011-08-05 8 views
11
내가 배열로 PLIST를로드 나는 성공하기 전에 사용했던 코드 조각을 사용하고

반환 , 앱 번들에서 plist를 찾을 수 없음을 제안).액세스가 null가

iPhone 시뮬레이터에서 첫 번째 줄에서 생성 된 경로가 앱 파일을 가리키고 있는지 확인하고 Finder 컨텍스트 메뉴 인 "Show package contants"를 사용하여 "species_name.plist "실제로 묶음에 있습니다. 길이가 물건을 포함하고 있음을 나타내므로 이어야합니다.해야합니다. (필자가 작성한 다른 iOS 응용 프로그램에서도 마찬가지입니다.) 제안은 대부분 환영합니다 ...

[env Xcode 4.2 beta, iOS 4.3.2].

답변

27

이 아닌 NSDictionary 인스턴스의 initWithContentsOfFile: 메서드를 사용해야합니다.

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"species_names" ofType:@"plist"]; 
NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:filePath]; 
NSArray *array = [NSArray arrayWithArray:[dict objectForKey:@"Root"]]; 

또는이 : 당신은 NSArraywriteToFile:atomically: 방법으로 생성 된 파일과 NSArrayinitWithContentsOfFile: 방법을 사용할 수 있습니다

NSString *errorDesc = nil; 
NSPropertyListFormat format; 
NSString *path = [[NSBundle mainBundle] pathForResource:@"startups" ofType:@"plist"]; 
NSData  *plistXML = [[NSFileManager defaultManager] contentsAtPath:path]; 
NSDictionary *temp = (NSDictionary *)[NSPropertyListSerialization      
              propertyListFromData:plistXML 
mutabilityOption:NSPropertyListMutableContainersAndLeaves 
              format:&format 
              errorDescription:&errorDesc]; 
NSArray *array = [NSArray arrayWithArray:[temp objectForKey:@"Root"]]; 


EDIT 여기 는 샘플입니다. writeToFile:atomically:로 만든 PLIST이 stucture 있습니다

<plist version="1.0"> 
<array> 
    ...Content... 
</array> 
</plist> 

그리고 PLIST은 엑스 코드에서 생성이 stucture 있습니다

<plist version="1.0"> 
<dict> 
    ...Content... 
</dict> 
</plist> 

그게 왜 NSArray dosnt 작업 initWithContentsOfFile: 방법. 이러한 유형의

+0

을; 감사. – RonC

2

plist :

enter image description here

OR (기본적으로 모두 동일)

enter image description here

은 다음과 같이 읽을 수 있습니다 :

NSString *file = [[NSBundle mainBundle] pathForResource:@"appFeatures" ofType:@"plist"]; 
NSArray *_arrFeats = [NSArray arrayWithContentsOfFile:file]; 
NSLog(@"%d", _arrFeats.count); 

appFeaturesplist의 이름입니다. (아이폰 OS 6.1)

0

이 간단 metod보십시오 : 궤도에 저를 얻었다

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [self plistData]; 
} 


- (void)plistData 
{ 
    NSString *file = [[NSBundle mainBundle] pathForResource:@"appFeatures" ofType:@"plist"]; 
    NSArray *messages = [NSArray arrayWithContentsOfFile:file]; 
    NSLog(@"%d", messages.count); 

    for (int i=0; i<messages.count; i++) 
    { 
     NSString *data = [messages objectAtIndex:i]; 
     NSLog(@"\n Data = %@",data); 
    } 
} 
관련 문제