2010-06-02 3 views
1

본질적으로 책인 iPhone 앱을 만들고 있는데, 많은 텍스트가 많이 포함 된 콘텐츠가 번들로 제공됩니다.콘텐츠가 많은 iPhone 앱용 데이터 형식 - Plist 또는 XML?

데이터를 XML로 묶어 응용 프로그램이 시작될 때로드하는 방법을 생각했지만 XML에 중첩 된 구조가 많이 포함되어 있으며 구문 분석하기가 다소 어려웠습니다.

plist를 사용하는 것이 더 좋습니까? 나는 메모리 사용에 대해 염려하고 plists는 완전히 메모리에로드됩니다 - 청크로 파싱 될 수 있습니까? plist에 최대 크기가 있습니까? 얼마나 효율적입니까?

번들링 된 컨텐츠가 얼마나 큰지는 잘 모르겠지만, 500k에서 4MB까지 어느 곳에 나있을 수 있다고 상상해야합니다.

+0

언급해야 할 내용 - 내용은 사람이 읽을 수 있어야 sqllite 등이 문제가되지 않습니다. –

답변

2

속성 목록은 NSObject에서 파생 된 모든 항목의 기본 직렬화 형식입니다. 가변 상태 보존과 관련된 몇 가지 문제가 있지만 전반적인 plist는 Apple에서 선호하는 형식입니다. 마크 업의 세부 사항을 추상화하는 NSData에서 파싱 메서드를 사용할 수 있습니다. XML에 관해서는, 당신은 당신 자신의 파서를 작성하는 작업에 부담을 느낀다.

자세한 내용은 this을 참조하십시오.

plist 파일 자체는 엄격한 XML입니다. plist를 선택하면 서버 측에서 plist XML을 구문 분석하고 두 노드를 모두 키 - 값 쌍으로 처리 할 수 ​​있어야합니다.

+0

의견을 보내 주셔서 감사합니다. plist 파일이 XML이라는 사실을 알고 있습니다. 일반 XML을 사용할 때 성능상의 차이가 있다면 관심이 있습니까? –

-1

콘텐츠를 HTML로 보내지 않는 이유는 무엇입니까? (챕터 또는 일부로 나눌 수 있습니다.)

그런 식으로 파싱하거나 다시 포맷하지 않고 WebView를 통해 즉시 표시 할 수 있습니다.

+0

흥미로운 아이디어, 확실히 생각할 무언가. –

1

필자의 경험에 비추어 볼 때, plist는 훨씬 더 쉽게 유지 보수 할 수 있으며 장기적으로는 더 좋습니다. 필자는 비슷한 상황을 겪었고 추가 설정없이 동일한 API를 모두 사용하여 내 앱에서 읽는 데이터 파일을 생성하는 앱을 작성했습니다. 코코아에 익숙하다면 그 타격은 계속 될 것입니다.

아이폰 SDK에 포함 된 List Editor app 속성으로 사람이 읽을 수 있습니다. 매우 큰 데이터 구조의 경우에는 손으로 직접 사용하지 않는 것이 좋습니다. 그렇기 때문에 데이터를 생성하는 코드와이를 사용하는 데 거의 1 : 1의 비교가 적용되므로 다른 앱을 어떻게 구축했는지 언급 한 것입니다. plist 편집기는 항목을 조정하거나 중소 규모 데이터를 편집하고 다시 기본 XML을 숨기는 데 매우 유용합니다.

0

인간의 가독성을 설계 목표로 삼으려면 JSON을 고려해야합니다. 모든 응용 프로그램에 대한 올바른 대답은 아니지만 고려 대상입니다. 오픈 소스 json 프레임 워크 (여기 : http://code.google.com/p/json-framework/)는 훌륭하고 JSON 문자열을 객체에 인코딩 및 디코딩하는 매우 편리한 메소드를 NSString의 카테고리로 제공합니다. 따라서 다음과 같이 말할 수 있습니다.

NSString *jsonString = ...// however you're loading the goods 
NSDictionary *myData = [jsonString JSONValue]; 

... 그리고 붐, 네이티브 개체로 작업하고 있습니다. 내 돈으로 plist를 읽는 것보다 훨씬 쉽습니다.

관련 문제