2011-11-28 2 views
0

plist 파일을 변경 가능한 배열로 전송하는 데 문제가있어서 테이블보기를 채울 수 있습니다. MyDeals.plist라는 plist를 만들었습니다. 루트를 배열로 만든 다음이 배열의 하위 집합으로 두 개의 사전을 추가 한 다음 해당 사전에 문자열을 채 웁니다. 다음과 같이PList 정보를 문자열로 변환 한 다음 가변 배열 (iOS)

코드는 다음과 같습니다

NSString *myfile = [[NSBundle mainBundle] pathForResource:@"MyDeals" ofType:@"plist"]; 
NSLog(@"%@", myfile); 
NSMutableArray *myArray = [[NSMutableArray alloc] initWithContentsOfFile:myfile]; 
NSLog(@"%@", myArray); 
self.dealsArray = myArray; 
[myArray release]; 

그 다음까지 작동하지만, 그래서 첫 번째 NSLog는 PLIST 파일에 대한 올바른 경로를 로그 아웃 한 다음 두 번째 로그 수익률 '(널)'그래서에서 myArray 아무튼 ' 어떤 이유로 myfile에서 실제로 정보를 가져 오지 않습니다. 어떤 아이디어? 감사!

답변

1

먼저 파일을 NSData에로드하여 문제가 무엇인지 확인하십시오.

NSError *error; 
NSData *data = [NSData dataWithContentsOfFile:myfile options:0 error:&error]; 
if (!data) { 
    NSLog(@"error loading plist from %@: %@", myfile, error); 
    return; 
} 
self.dealsArray = [NSPropertyListSerialization propertyListWithData:data 
    options:NSPropertyListMutableContainers format:NULL error:&error]; 
if (!self.dealsArray) { 
    NSLog(@"error parsing plist from %@: %@", myfile, error); 
    return; 
} 
+0

오류 메시지 중 하나도 기록하지 않았습니다. 'data'는 null/undefined가 아니며 'self.dealsArray'도 아닙니다 (적어도 오류 메시지가 실행되지 않았으므로 가정합니다). self.dealsArray는 myArray와 동등하지만 myArray는 로그 아웃 될 때 null입니다. 돈. – MillerMedia

+0

내 코드가'self.dealsArray'를 올바르게 설정했다는 것을 의미합니까? 그렇다면 환영합니다. :) –

+0

오, 하하, 예. 1 분 전 오류 메시지가 나타나기 엔 너무 바빴습니다. 그 일이 일어 났는지는 몰랐습니다. 로그 아웃했는데 잘 작동합니다. 감사합니다 롭! – MillerMedia

0

제가 틀릴 수도 있지만 나는 PLIST는 루트 요소가 배열 인 경우에도 배열을 사전으로 직렬화하지해야한다 생각합니다. 파일에서 배열을 desirialize하려면 NSArray writeToFileAtmoically에서 작성된 파일이어야합니다.

관련 문제