2016-07-06 3 views
1

XML 피드의 결과를 보여주는 컬렉션보기가 있습니다. 위대한 작품이지만 XML 피드의 결과를 로컬로 저장해야합니다 (예를 들어 인터넷 연결이없는 경우).XML 피드의 항목을 열거합니다.

원시 피드를 로컬에 저장하는 방법을 알고 있지만 실제로해야 할 일은 이며 XML 피드의 항목을 반복하고 각각을 NS30 항목으로 저장합니다..

올바른 생각인가요? 아니면 유용한 조언이나 조언이 있습니까?

- (void)startParsing 
{ 
    NSXMLParser *xmlparser = [[NSXMLParser alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://images.apple.com/main/rss/hotnews/hotnews.rss#sthash.TyhRD7Zy.dpuf"]]; 
    [xmlparser setDelegate:self]; 
    [xmlparser parse]; 
    if (_marrXMLDataCollection.count != 0) { 
     // Save XML to NSData items in background? 

     [self.collectionView reloadData]; 
    } 
} 

여기에 공급이 어떻게 생겼는지의 예, 나는 너무 localdata.plist으로 문서 디렉토리에 저장이있다 : 당신은 그냥 직접 XML을 파일로 저장할 수 있습니다

(
     { 
     link = "\nhttp://www.apple.com/pr/library/2016/04/26Apple-Reports-Second-Quarter-Results.html?sr=hotnews.rss"; 
     pubDate = "\nTue, 26 Apr 2016 14:44:21 PDT"; 
     title = "\nApple Reports Second Quarter Results"; 
    }, 
     { 
     link = "\nhttp://www.apple.com/final-cut-pro/in-action/trim-editing/?sr=hotnews.rss"; 
     pubDate = "\nWed, 20 Apr 2016 10:05:59 PDT"; 
     title = "\n\nFinal Cut Pro X helps small company delight world\U2019s biggest clients"; 
    }, 
     { 
     link = "\nhttp://www.apple.com/ipad-pro/?sr=hotnews.rss"; 
     pubDate = "\nMon, 21 Mar 2016 12:00:03 PDT"; 
     title = "\n\nApple Introduces 9.7-inch iPad Pro"; 
    }, 
     { 
     link = "\nhttp://www.apple.com/iphone-se/?sr=hotnews.rss"; 
     pubDate = "\nMon, 21 Mar 2016 11:58:09 PDT"; 
     title = "\n\nApple Introduces iPhone SE \U2014 the Most Powerful Phone with a 4-inch Display"; 
    }, 
+0

왜 XML을 저장하지 않습니까? – Wain

+0

@Wain XML을 속성 목록이나 다른 것으로 저장한다고 말하고 있습니까? 이 경우 피드에 사진이 너무 많이 남기 때문에 결국 얼마나 효과가 있을지 잘 모르겠습니다. 결국 NSData 항목 대신/추가적으로 해당 항목을 설정해야합니다. – SRMR

+0

사진은 XML에서 어떻게 나타 납니까? base64 인코딩 된 문자열? – Wain

답변

1

, 이진 데이터 또는 텍스트로. 포장을 풀고 아무것도 변환 할 필요가 없습니다. 나중에 파인을로드하고 파싱 코드를 다시 실행할 수 있습니다. 이것은 최소한의 코드 옵션입니다. 런타임 비용이 많이 들지만 XML 파일이 크지 않으면 차이를 느끼지 못할 것입니다.

처리 된 내용을 저장하려면 XML이 모델 객체의 배열로 바뀌어야하며 해당 모델 객체에 NSCoding을 구현하여 디스크에 아카이브 할 수있게해야합니다. 이것은 런타임 효율성이 더 높아야하지만 더 많은 코드입니다.

+0

굉장합니다. 내가 11 시간 안에 현상금을 줄거야. – SRMR

+0

사진이 base64로 인코딩 된 문자열이 아닌 경우 솔루션에 많은 차이가 있습니까? 빠른 질문을 할 수 있습니까? – SRMR

+0

그런 경우 일반적으로 피드에는 이미지를 다운로드하는 링크가 포함되어 있으므로 XML 피드에는 실제 이미지가 포함되지 않습니다. 따라서 이미지를 다운로드 할 때마다 저장 용량이 크게 변경되지는 않습니다. 당신은 아마도 별도의 이미지 캐싱 시스템을 사용하고 XML에서 멀리 떨어져있게 될 것입니다. – Wain