2017-05-24 11 views
-1

私の質問に新しいアプローチ。私はそれが明らかだと思ったが、明らかに ではない。 : - D 2ndチャンス。構造を選択するための素早い変数

SWXMLhashを使用してウェブサイトから情報を取得します。各ウェブサイトについては、異なるウェブサイトのデータ構造が異なるため、別の構造が必要です。

私は選択されたウェブサイトに応じて一般的な機能に変換したい(ウェブサイトを1つのソースとして使用しています)良好な機能を持っています。

TorrentProviderItem = try xmlTorrent["rss"]["channel"]["item"].value() 

コンパイルエラー=メンバーへのあいまいな参照「添字」関数の

コード:

私は(下記のコードを参照)、これまで持って最善の解決策は、上で私のコンパイルエラーを得ました

private func setResultsToEqualData(result: String, Torrentprovider: TorrentProviders) { 
    var TorrentProviderItem: [XMLIndexerDeserializable] 
    var xmlTorrent: XMLIndexer! 
    xmlTorrent = SWXMLHash.parse(result) 

    switch Torrentprovider { 
    case .ExtraTorrent: 
     TorrentProviderItem = [ExtraTorrentItem]() 
    default: 
     TorrentProviderItem = [Torrentz2Item]() 
    } 

    do { 
     TorrentProviderItem = try xmlTorrent["rss"]["channel"]["item"].value() 
    } catch { 
     print("FOUT in torrent!!") 
     return 
    } 

    selectBestResult() 
} 

私はこれを解決する手がかりがありません。誰か?

var TorrentProviderItem: [ExtraTorrentItem] 

と正常に動作スイッチ、なし:私が使用して1つのウェブサイトの本来の機能で

PS。

+0

「誰か助けてくれますか?」あなたのQを編集して、達成しようとしているもの、実際に試したコード、正確なコンパイラエラー(そしてどのライン)を受け取ったのか、はるかに詳しく説明してください。この情報なしであなたの質問に答えることは不可能です。 「2と他の番号とは何ですか?」のように - 私達が言うことができる最高の "それは何か他の番号が何であれ二倍です"です。 –

+0

@ Joshua Nozzi良い点、私は私の質問を完全に変更しました。私は答えを見つけるためにコードを使って遊んだ。私はすべての "テスト"コードを保存していないので、私が試したことすべてを表示することはできません。提示されたコードは私が持っている閉鎖です。 –

+0

タイプ 'XMLIndexer'はソースコードに応じて' value() 'と呼ばれる関数を持っていないようです。 – JeremyP

答えて

0

いくつかは、構造体内の関数のオプションを示しました。だから私はこれを使って回避策を作りました。私は各Webサイトの各構造体に関数を書きましたが、各関数の戻り値は同じデータ型です。

私にとっては、解決策ではなく解決策です。私はまだ関数にすべてのウェブサイトを追加する必要があります(下記参照)。

private func setResultsToEqualData(result: String, Torrentprovider: TorrentProviders) -> torrentProviderItem? { 
    var TorrentProviderItem = [torrentProviderItem]() 
    var xmlTorrent: XMLIndexer! 
    xmlTorrent = SWXMLHash.parse(result) 

    switch Torrentprovider { 
    case .ExtraTorrent: 
     var tempExtraTorrentItem: [ExtraTorrentItem] 
     do { 
      tempExtraTorrentItem = try xmlTorrent["rss"]["channel"]["item"].value() 
      for item in tempExtraTorrentItem { 
       TorrentProviderItem.append(item.result()) 
      } 
     } catch { 
      print("FOUT in torrent!!") 
      return nil 
     } 

    case .Torrentz2: 
     var tempTorrentz2Item: [Torrentz2Item] 
     do { 
      tempTorrentz2Item = try xmlTorrent["rss"]["channel"]["item"].value() 
      for item in tempTorrentz2Item { 
       TorrentProviderItem.append(item.result()) 
      } 
     } catch { 
      print("FOUT in torrent!!") 
      return nil 
     } 
    } 
    return (selectBestResult(results: TorrentProviderItem)) 
} 

一般的な機能を作成するソリューションはStrucs内にあると思います。各Webサイトの構造体の代わりに、すべてのWebサイトに1つの構造体を使用する。私はちょうどこれを行う方法を知らない。ジェット。

関連する問題