2011-04-10 2 views
6

저는이 방법을 잠시 동안 사용해 왔기 때문에 내 문제가 정확히 무엇인지 모르겠습니다.어레이가 plist에서 데이터를로드하지 않습니다.

기본적으로 제목에 나와 있습니다. 그것은 표시 "자원"그룹

NSString *myFile = [[NSBundle mainBundle] pathForResource:@"myList" ofType:@"plist"]; 
myArray = [[NSArray alloc]initWithContentsOfFile:myFile]; 
NSLog(@"%@", myArray); 

(널)에 위치한 PLIST에서이 코드 데이터를로드합니다. 왜 그런지 알아?

동일한 ViewController에 다른 설정이 하나 있는데 제대로 작동합니다. 이 특정 plist하지만로드되지 않습니다. 그리고 나는 plist를 삭제하고 구조 문제가 아닌지 확인하기 위해 다른 하나의 복제물을 만들었습니다.

내가 잘못하고있는 중입니까? FileManager를 사용해야합니까?

업데이트 --------------------------------------------- ----------------------------

그래, 나는 내가 말하고자하는 것을 믿을 수 없다. lol

Xcode에서 plists를 편집하는 방법은 Xcode 3.x와 다릅니다. 이전 버전에서와 마찬가지로 plist의 루트를 선택하여 (Array, Dictionary 등) 원하는 w/e가되도록했습니다. 내 문제는 NSArray에로드하려고했던 plist가 실제로 사전. 그러나 나는 Xcode에서 이것을 결코 보지 못했고, TextEdit 또는 다른 텍스트 편집기를 사용하여 내용을 탐색하는 것 이외의 다른 방법을 알지 못합니다.

어리석은 말을해야합니다. XCode 3.x가하는 것처럼 XCode 4가 plist의 루트를 보여주지 않는 이유를 아는 사람이 있습니까?

엑스 코드 3.x를 : http://dl.dropbox.com/u/919254/XCode3.png

엑스 코드 4 : 당신이 무엇 http://dl.dropbox.com/u/919254/Screen%20shot%202011-04-10%20at%202.30.35%20AM.png

답변

3

대신 사전을 사용하십시오. NSArrays 및 속성 목록에 정의되지 않은 동작이 있습니다. 예 :

+0

이것은 작동합니다 ... 왜 나는 이해하지 못합니다.plist의 구조는 나머지 파일들과 똑같은 구조입니다. : ( – MrShoot

+1

plist의 최상위 객체가 배열 인 경우 plist를로드 할 때 * NSDictionary 또는 NSMutableDictionary를 사용할 수 없으며 그 반대의 경우도 있습니다. 이는 사용자 기본 설정의 문제가 아닙니다. OP 문제는 기본 plist의 최상위 객체가 배열이 아닌 사전 이었기 때문에 @ManuelDiaz가 잘못된 예제 plist 파일을 게시했습니다. – jlehr

+0

명확한 설명 주셔서 감사합니다.이 정의되지 않은 동작이 발생했습니다. @Manuel Diaz의 업데이트가 Xcode 4가 plist root를 숨길 때까지 알지 못했습니까? – David

0

바로 보인다. 파일이 올바른 디렉토리에 있고 내용이 있는지 확인하십시오. NSLog myfile을 원할 때가 있습니다.

+0

파일이 올바른 디렉토리에 있습니다. 내 기록은 http://dl.dropbox.com/u/919254/Screen%20shot%202011-04-10%20at%202.30.35%20AM.png이며 내용은 http://dl.dropbox.com/u입니다. /919254/Screen%20shot%202011-04-10%20at%202.33.37%20AM.png – MrShoot

+0

게시자가 게시 한 plist 파일의 루트를 확인하는 것만으로 사전 (배열 모양)을 확인할 수 있습니다. 그리고 당신은 프로그램에서 올바른 이름을 사용하고 있습니다. – Jordan

+0

이것은 이상한데, 어떻게 든 사전에 plist를로드하면 아무런 문제가 발생하지 않습니다. 그러나 구조는 내 plists의 나머지 부분과 정확히 동일하며 NSArrays로로드됩니다! – MrShoot

1

나는 비슷한 상황이있었습니다. 해결 :

  1. 선택 *
  2. 호출 컨텍스트 메뉴
  3. 루트가 표시됩니다 "외부 편집기 열기"를 선택 트리에서 .plist - 변경 "클래스"에서 "배열"
  4. 저장
관련 문제