SqlServerのようなデータベースでは、自動的にインクリメントするフィールド(Identity Increment)を設定できますが、コアデータでそれを行うことは可能ですか?
5 に答える
CreationDateフィールドの使用を検討してください。オブジェクトを作成するときは、単に追加します
NSDate *creationDate = [NSDate date];
NSDateで並べ替えたり、doubleに変換したりするのは非常に簡単です。
CoreDataでは内部および自動の自動インクリメントは不可能だと思います。そのためにカスタムソリューションを使用する必要があります。
実際に何をしようとしているのか教えていただけますか?
私は同じ問題を抱えていてNSUserDefault
、カウンターを保管するために使用しています。
カウンターをインクリメントする方法をテストするために、テストプロジェクトに以下のdodeを入れてください。
そのコードから、何をする必要があるかがわかり、必要に応じてこのコードを変更できます。
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
int count;
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
count = [prefs integerForKey:@"integerKey"];
NSLog(@"counter is >>>>%d",count);
[prefs setInteger:count forKey:@"integerKey"];
// code for adding record to core data
count++;
NSUserDefaults *prefs1 = [NSUserDefaults standardUserDefaults];
[prefs1 setInteger:count forKey:@"integerKey"];
NSLog(@"counter is >>>>%d",count);
}
挿入時に自動的にインクリメントするフィールドが必要な場合は、CoreDataafaikでは不可能です。カスタムソリューションを考え出す必要があります。どの解決策は、解決しようとしている問題によって異なります。
Core Dataは、Core Dataで永続化される各オブジェクトの一意のオブジェクトID(またはURI)を維持します。オブジェクトIDとURIの詳細については、こちらをご覧ください。
はい、これは可能ですが、おそらくあなたがそれについて考えている方法ではありません。:)-「キー」フィールドとしてではなく、を意味します。
'counter'を作成できます。NSManagedObject
これは、アプリの起動時に初期化され、'現在の番号'および'次の番号'のプロパティを追跡した後に存在します。
現在の番号を取得して、この一意の増分された「番号」を持つ必要があるオブジェクトのプロパティ値として割り当てることができます。
apple.comにリンクが見つからないサンプルコード「iClass 」がありますが、Xcodeの以前のインストールでディレクトリ/ Developer / Examples/CoreDataがあったときにXcodeとともにインストールされました-これはない可能性があります、あなたがそうする場合には、それを見ることは役に立つかもしれません。