2016-10-14 11 views
0

私は最初のRxSwiftプロジェクトを開始しています。RxSwiftでページ区切りページの全ページURLを取得する方法

このページのページ番号をすべて入力してください:http://mangafox.me/directory/ これまでのところ、次のページのURLを取得できます。ここ は、これまで使用されたコードです:

func getNextPageUrl(currentStringUrl: String) -> Observable<String> { 
    return Observable.create { observer -> Disposable in 
     let request = Alamofire.request(currentStringUrl) 
      .validate() 
      .responseString { response in 
       if response.result.isSuccess { 
        if let doc = HTML(html: response.result.value!, encoding: .utf8) { 
         if let nextPage = doc.css("a > span.next").first?.parent { 
          observer.onNext("\(currentStringUrl)\(nextPage["href"]!)") 
         } 
        } 
        observer.onCompleted() 
       }else{ 
        observer.onError(response.result.error!) 
       } 
     } 

     return Disposables.create { 
      request.cancel() 
     } 
    } 
} 

は今、私は他の次のページネーションリンクの文字列リストを作りたいです。どうしたらいいですか?

私はここに私の方法自分を発見した

答えて

0

func getAllMangaPage() -> Observable<String>{ 
    return Observable.create { observer in 

     var urls :[String] = [] 
     let subs = self.repeatEvery(second: 0.2) 
      .subscribe { event in 
       if urls.isEmpty { 
        urls.append(self.popularMangaInitialUrl()) 
       }else{ 
        self.getNextPageUrl(currentStringUrl: urls.last!) 
         .subscribe(
          onNext: { url in 
           var nextUrl = url as String 
           if !nextUrl.contains("http://") { 
            let completeUrl = "\(self.popularMangaInitialUrl())\(nextUrl)" 
            if !urls.contains(completeUrl){ 
             urls.append("\(self.popularMangaInitialUrl())\(nextUrl)") 
             observer.onNext(urls.last!) 
            } 
           }else{ 
            if !urls.contains(nextUrl){ 
             urls.append(nextUrl) 
             observer.onNext(urls.last!) 
            } 
           } 
          }, 
          onCompleted: { 

          }, 
          onDisposed: { 

          } 
        ) 
       } 
     } 

     return Disposables.create { 
      print("Disposed") 
      subs.dispose() 
     } 
    } 
}