2016-09-10 24 views
0

ここに状況があります。 私は天気予報のためのすべての変数(最低気温、最高気温、湿度など)を含む素早いモデルクラスファイルを持っています。 クラスには、APIからすべてのデータをダウンロードする関数も含まれています。 私の質問は、クラス自体の内部にクラスの配列を作成することができます。そうすれば、APIが返す予測日数に基づいて(同じクラスの)いくつかのオブジェクトを追加できますか? もしそうなら、どのように達成できるか教えていただけますか? 私はそれが完全に動作する他のオプションは、(ViewControllerの)予測クラスの外でAPIのダウンロードと解析を行うことですが、それはViewControllerを面倒にしてしまいます。クラス自身のインスタンス内にクラスのインスタンスを作成します

+0

はい、これを行うことができます。おそらく、 'getForecast'関数をクラス関数にするでしょう。構文のトリックはありません。 – Paulw11

答えて

0

定義内でクラス名を参照できないことは何もありません。あなたのモデルではなく、専用のクラスで全天候の件のデータを取得するAPIを呼び出すべきではありません

class Foo { 
    var boz = [Foo]() // you can append to this array as needed 
} 
+0

何らかの理由で、let bar = Foo()行でスレッド:EXEC_BAD_ACCESSエラーが発生することがあります。 –

+0

ああ、そうですね、ごめんなさい。初期化中は、最初のFooがbarを初期化しようとすると無限ループに入り、次のものはinit barなどを試みます。私はその行を削除する答えを編集した、あなたはまだFoo(変数boz)の配列を持つことができます、あなたは最初のクラスが作成された後に追加する必要があります。 – par

0

:だから、このような何かを行うことができます。 また、データを解析してモデル内に格納しないでください。

モデルでは、オブジェクトとメソッドのすべての属性を持つ必要があります。

このメソッドをすべて実装してデータを保存するHelperクラスを作成することもできます。

+0

基本的には、JSONを解析してデータを配列に格納するヘルパークラスを作成し、そのViewControllerでそのヘルパークラスを呼び出してUIを更新する方が良い方法でしょうか? –

+0

正確です。これを行うことで、OOPを尊重することができます。そしてあなたはコードを簡単に管理して読めるようになります。私の英語を謝ります。 –

+0

ありがとうございます。意味あり。 私はトピック以外の質問があります。あなたが言及したようなベストプラクティスのための良いリソースを知っていますか? –

関連する問題