私は iOS の初心者で、現在、アプリの「新しいイベントの作成」ページを設計しています。
いくつかの情報:
- ユーザーは [新しいイベントの作成] をクリックし、[戻る] をクリックしてこの新しいイベントの作成をキャンセルできます。(私は UINavigationController を使用しています)
- 1 つのビデオを特定のイベントに添付できます。
- ユーザーは新しいイベントを作成し、ビデオを録画してから、保存を続行しないことを決定できます ([戻る] を押す)。
- 各イベントは uuid を生成する必要があります。この uuid は、イベントを作成してサーバーに送信する異なるクライアント間のエンティティの衝突を防ぐために必要です。
- キャプチャされた各ビデオには、イベントがサーバーにアップロードされる前にファイル システムに保存するためのuuid .mov という名前が付けられます。
レールのバックグラウンドから来て、私は次のことをすることに慣れています:
- ユーザーが [Create new event page] をクリックすると、イベントが作成されますが、データベースには保存されません。
- 次に、ユーザーはページに属性を入力し、コミットするかどうかを決定します
- コミットが発生すると、イベントは提供された情報に関連付けられます。その後、イベントが保存されます。
ただし、Core Data には、開発者がエンティティを保存せずに作成できる API があるとは思えません。現在、私は次のようなことをしています:
- ユーザーが「新規イベント作成ページ」にアクセスすると、空のオブジェクトが作成され、データベースに保存されます。イベント インスタンスへの参照は、新しいイベント ページの作成のコントローラに渡されます。
- ユーザーがすべての情報を入力してビデオを撮影すると (uuid は awakeFromInsert で作成され、1 で設定されます)、保存は必要な属性を持つエンティティを設定するだけです。
- ユーザーがイベントの作成をキャンセルすることにした場合、キャンセルが押されたかどうかを確認しています。その場合、イベントとビデオ ファイルの両方が削除されます。
キャンセルが押されたかどうかを確認するコード。
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
if (![[self.navigationController viewControllers] containsObject:self]) {
これは正直言って少し複雑です。皆さん、より良い提案はありますか?