2017-03-26 12 views
1

私は特定の時刻に値を毎日コアデータに保存する保存機能を持っています。しかし、アプリが実行されていない、またはバックグラウンドにあるときは、もちろん値を保存しません。 この問題を解決する方法はありますか?アプリがバックグラウンドで実行されている間にデータを保存しますか? は、ここに機能だ:アプリがバックグラウンドであっても機能を実行する

func addValueDateToCore() { 

// make sure data is not saved twice 
    if hasBeen == 0 { 

     hasBeen += 1 

    let newData: SavedAwayData = NSEntityDescription.insertNewObject(forEntityName: "SavedAwayData", into: DatabaseController.getContext()) as! SavedAwayData 

    let dateFormatter = DateFormatter() 
    dateFormatter.dateStyle = .medium 
    dateFormatter.timeStyle = .none 

    newData.name = dateFormatter.string(from: Date()) 
    newData.greenCustomer2 = veryHappyCustomer 
    newData.orangeCustomer2 = happyCustomer 
    newData.redCustomer2 = unHappyCustomer 

    DatabaseController.saveContext() 
    } 


} 

hasBeen変数がaddValueDateToCore()の後の秒のカップルは、誰のものにそれにコメントすることができます別の関数によって0に変異させます。

+0

まだ誰もあなたを助けてくれていないことがわかります。 saveContext()が呼ばれていることを確認するためにブロック内にprintステートメントを追加しようとしましたか?あなたhasBeenを更新するコードを表示してください。 – Mozahler

+0

私は書き留めたコードが動作していることを知っています。私の質問に書かれた問題を考えて、私はそれを解決する別の方法を見つけました。 –

+0

あなたはそれを働いてうれしいです。 – Mozahler

答えて

1

アプリは、オーディオを再生したり、バックグラウンドネットワーク接続を処理したりするような特定のvery specific situationsのバックグラウンドでのみ実行できます。あなたの質問は、アップルのバックグラウンドモードには似ていませんが、ドキュメントを見て、あなたの考えを見てください。

あなたのアプリが起動したとき、より良い方法(または少なくともiOSで動作する方法)はこれを処理することです。逃した日があるかどうかを見て、欠落しているデータを記入してください。

関連する問題