2017-10-20 3 views
0

365個の整数を格納する配列を作成しようとしていますが、完全に塗りつぶす必要があります。私は1年後のユーザーステップを把握するためにHealthkitを使用しています。したがって配列のサイズです。すべての整数は1日を表します。配列に挿入して日付を比較するSwift iOSコード

私はすでにアンドロイドでこれを行っていますが、それは完全に機能しています.365の整数は、ステップがない日には0で戻っていますが、問題はiOSの健康キットです。必要。これを行うために、私は現在の日付+ 1の日付と変数を比較し、最後に配列を0にしないと、一致するケースがあるかどうかを調べるために配列をループすると考えました。

これを行うために、var ID = 0の行に365の配列を作成しました。これは、整数を正しく配列に格納しようとするところです。私は、最初に私は、アレイ内の現在の日付(基本的にはインデックス0で列挙ループに入る日付を比較しようとするvar IDで、私はstepDataを列挙場所ですスウィフト4

struct stepy { 
    static var step = [365] 
} 

使用しています今日の最初の日を表す)。

しかし、私は問題を抱えていますが、現在、2番目のステップの列挙ですでに日付に入力された日を上書きすると思いますか?また、私は、私はちょうど日が呼ばれる有効なメンバーを持っていない取得、日付コードを正しくコンパイルすることができません意味がありません上記

stepsQuery.initialResultsHandler = { query, results, error in 
    let endDate = NSDate() 
    let startDate = calendar.date(byAdding: .day, value: -365, to: endDate as Date, wrappingComponents: false) 
    if let myResults = results{ 
    myResults.enumerateStatistics(from: startDate!, to: endDate as Date) { statistics, stop in 
     if let quantity = statistics.sumQuantity(){ 
     var date = statistics.startDate 
     let steps = quantity.doubleValue(for: HKUnit.count()) 

     var id = 0     
     var dateToInsert = date 
     var today = Date() 
     var todaytwo = Date() 

     for index in 0..<stepy.step.count { 
      if dateToInsert != today { 
      id = index + 1 
      today.(Calendar.current.date(byAdding: .day, value: -1, to: today) 
      stepy.step.append(0)       
      } 
      if date == dateToInsert as Date {          
      today.add(Calendar.current.date(byAdding: .day, value: -1, to: today) 
      stepy.step.append(Int(steps)) 
      id = index + 1 
      } 
     } 
     } 
    } 
    } 
} 
+0

'var step = [Int](繰り返し:0、count:365)'で365個の0の配列を作成することができます。 –

答えて

0
static var step = [365] 

「追加」。それはあなたが必要なもの365で、その中に1つの整数の配列は、あなただけの

にあなたの結果を追加することができ、空の配列を作成します

static var step: [Int] = [] 

で作成し、365個の整数の配列を作成しません。

現在、2番目のステップの列挙時にすでに日付に入力されている日を上書きすると思いますか?

あなたのコードは、Javaの場合と同じである配列に追加しているため:myArrayList.add(element)、これは問題ではありません。

また、私は日付コードを正しくコンパイルするために得ることができない、私はちょうど日が

正しい「を追加」と呼ばれる有効なメンバーを持っていない取得し、それはしていません。この行も:

today.(Calendar.current.date(byAdding: .day, value: -1, to: today) 

は意味をなさない。コンパイルエラーが発生するはずです。

とにかく、私はすべてのポイントが何であるか分かりません。あなたの外側のループはおそらく1日に1回統計をループするので、あなたの計算を行い、配列に追加してください。一番古いものですが、配列を逆順にして、新しいものを最初に取得することができます。