문제

여기서 답변에 제안 된대로 Plist에서 배열을 얻으려고 노력하고 있지만 작동하지 않습니다. 누군가 내가 무엇을 놓치고 있는지 말해 줄 수 있습니까?

여기에 plist가 어떻게 생겼는지 .... 또 다른 이상한 점은 이것을 평범한 텍스트 파일로 열 수 없다는 것입니다. 내가 할 때 쓰레기처럼 보이지만 속성 목록 편집기에서는 괜찮아 보입니다.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>count</key>
<array>
     <integer>5</integer>
</array>
<key>username</key>
<array>
     <string>johnsmith</string>
</array>
</dict>
</plist>

다음은 제가 사용하고있는 코드입니다 ..... Dictionary는 nsmutabledictionary이고 AccountsArray는 .h 파일에있는 nsmustablearray입니다.

     NSMutableDictionary *tempDictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:accountsFilePath];

 dictionary = tempDictionary;
 [tempDictionary release];


 NSMutableArray *nameArray = [[NSMutableArray alloc] init];
 nameArray = [dictionary objectForKey:@"username"];

 accountsArray = nameArray;

 [nameArray release];

내가 뭔가를 놓치고 있습니까? 뭔가를 망치고?

감사...

도움이 되었습니까?

해결책 2

마침내 다음과 같이 작동했습니다.

    dictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:accountsFilePath];      


 if (accountsArray == nil){

     accountsArray = [[NSMutableArray alloc]init];
 }

 if (countArray == nil){

     countArray = [[NSMutableArray alloc]init];
 }



 countArray = [dictionary objectForKey:@"count"];
 accountsArray = [dictionary objectForKey:@"username"];

다른 팁

글쎄, 많은 문제가 있습니다. 우선 PLIST는 아마도 이진 속성 목록 일 것입니다. 실제로 XML 속성 목록이 아닙니다. 이것은 코드 측면에서 크게 중요하지 않지만 일반 텍스트를 여는 문제를 설명하는 데 도움이되어야합니다.

둘째, 출시함으로써 tempDictionary, 당신은 또한 공개하고 있습니다 dictionary, 둘 다 같은 물체를 가리키기 때문에. 코드가 작동하지 않는 이유를 설명하는 데 도움이됩니다. 노력하다 autorelease, 또는 간단히 dictionaryWithContentsOfFile: 그리고 릴리스 문구는 alltogether입니다. (dictionaryWithContentsOfFile: 반환 값을 자동 조절합니다.)

또한 두 번째 문구에서 릴리스 실수를 반복합니다. 과제 연산자 (=) Objective-C에서 복사하지 않습니다. 그것 할당.

편집 : 속성 표기법을 사용할 때 후자는 사실이 아닙니다. 속성이 정의된다고 가정합니다. self.accountsArray = nameArray 배열을 객체에 (아마도) 복사 할 것입니다.

Reedit : 올바른 코드 :

dictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:accountsFilePath];
accountsArray = [dictionary objectForKey:@"username"];
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top