ユーザーが3つのフィールドを持つイベントを作成するアプリケーションを開発しています:
カテゴリ、名前、イベント。 ユーザーがエントリを入力した後、後で参照できるようにデータを保存する保存ボタンがあります。その後、アプリを再度開くと、データがテーブル ビューに表示されます。
iOSでデータを「保存」するにはどうすればよいですか? 私は NSUserDefaults について知っていますが、これがこの例の方法ではないと確信しています。
私がこれまでに行ったこと:
Category 、 name 、 event で「Note」クラスを作成しました。
保存ボタンのコードは次のようになります。
- (IBAction)save:(id)sender {
//creating a new "note" object
Note *newNote = [[Note alloc]init];
newNote.category = categoryField.text;
newNote.name = nameField.text;
newNote.event = eventField.text;
// do whatever you do to fill the object with data
NSData* data = [NSKeyedArchiver archivedDataWithRootObject:newNote];
/*
Now we create the path to the documents directory for your app
*/
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
/*
Here we append a unique filename for this object, in this case, 'Note'
*/
NSString* filePath = [documentsDirectory stringByAppendingString:@"Note"];
/*
Finally, let's write the data to our file
*/
[data writeToFile:filePath atomically:YES];
/*
We're done!
*/
}
これはイベントを保存する正しい方法ですか? 書いたものを今すぐ取得するにはどうすればよいですか?
次に、このコードを再度実行すると、データを上書きするか、新しいエントリを作成しますか?
毎回新しいエントリを作成する方法を確認したいと思います。
また、提示しているテーブルからイベントを削除したいので、削除がどのように機能するかを確認したいと思います。
私の「メモ」オブジェクトは次のようになります。
@interface Note : NSObject <NSCoding> {
NSString *category;
NSString *name;
NSString *event;
}
@property (nonatomic, copy) NSString *category;
@property (nonatomic, copy) NSString *name;
@property (nonatomic, copy) NSString *event;
@end