1

これまでのところ、基本的に次のもので構成される実用的なアプリがあります。

Core Data を使用して、ユーザーに 3 つのフィールドにテキストを追加するように求める新しいビュー コントローラーをモーダルに呼び出す追加ボタンを備えた 1 つのテーブル ビュー コントローラーがあります。ユーザーが [保存] をクリックすると、情報が入力されたサブタイトル セルとしてエントリがテーブル ビュー コントローラーに追加されます。これはうまく機能します。

私が混乱していて答えを探していたのは、新しいエントリがセルの下部に追加されるという事実です。したがって、画面を埋めるのに十分なセルがある場合、新しく追加されたエントリが下部に追加されます。新しいエントリをそれぞれテーブル ビュー セルの一番上に表示したいと思います。

アルファベット順の sortDescriptors も実装しましたが、正直なところ、開始文字に関係なく、テーブル ビューの上部に新しいエントリを追加したいと考えています。

現在、私の FetchRequest は次のようになっています。

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Transaction"];
NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"whoBy.name" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)];
fetchRequest.sortDescriptors = [NSArray arrayWithObject:sortDescriptor]; 

self.transactions = [[managedObjectContext executeFetchRequest:fetchRequest error:nil]mutableCopy];

これは、エントリをデータベースに追加するコードです。

NSManagedObject *person = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:context];
[person setValue:self.nameTextField.text forKey:@"name"];

[transaction setValue:person forKey:@"whoBy"];

どんな考えでも大歓迎です!

4

3 に答える 3

2

新しいレコードを所定の位置に挿入できます

 [self.tableview insertRowsAtIndexPaths:indexPath withRowAnimation:YES ];

また、配列を更新することでそれを行うこともできます。

You can add object to as:

 [yourArray insertObject:object atIndex:0]; //for first row.

次に、新しい配列でテーブルをリロードします。

 [yourTable reloadData]

これはあなたのために働くでしょう。

于 2013-10-14T06:14:11.973 に答える
1

また、Coredata フェッチ リクエストによる降順で回答を取得することもできます。

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entityDesc = [NSEntityDescription entityForName:@"date" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entityDesc];

[fetchRequest setFetchBatchSize:10];

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"date" ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObjects:sortDescriptor, nil];    

[fetchRequest setSortDescriptors:sortDescriptors];

NSArray *fetchedObjects = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];
于 2013-10-14T06:49:01.957 に答える
0

誰かがこれを読んでいる場合の将来の参考のために、この問題を整理しました。

Add Entry View Controller (エントリをデータベースに追加し、保存ボタン メソッドを持つ View Controller) で、次のことを行いました。

1) クラスにプロパティを追加しました (@property (nonatomic, strong) NSDate *dateToday; 2) save メソッドで、次のことを行いました。

self.dateToday = [NSDate date]; 
[transaction setValue:self.dateToday forKey:@"createdDate"];
// transaction is looking into the Transaction Entity which has an attribute called createdDate of type Date. 

3) TableViewController と NSFetchRequest で、次のことを行いました。

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"createdDate" ascending:NO]; 
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor]; 
[fetchRequest setSortDescriptors:sortDescriptors];

新しいエントリを作成すると、Ascending が NO に設定されているため、新しく作成されたエントリは Table View Controller の一番上に表示されます。

ご指導ありがとうございます @Pradhyuman Chavda

于 2013-10-16T07:46:01.867 に答える