1

到目前为止,我有一个工作应用程序,它基本上包括以下内容:

使用核心数据,我有 1 个带有添加按钮的表视图控制器,它以模态方式调用一个新的视图控制器,提示用户将文本添加到三个字段中。当用户单击保存时,该条目将作为字幕单元格添加到表格视图控制器中,并填写了信息。效果很好。

我感到困惑并一直在寻找答案的事实是,每个新条目都会添加到单元格的底部,因此如果有足够的单元格填满屏幕,则新添加的条目会添加到底部。我真的很想将每个新条目放在表格视图单元格的顶部。

我已经实现了 Alphabetical 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

您还可以在 Descending by 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

如果有人正在阅读此问题,我已将这个问题整理出来以供将来参考。

在添加条目视图控制器(将条目添加到数据库并具有保存按钮方法的视图控制器)中,我执行了以下操作:

1)我向类添加了一个属性(@property (nonatomic, strong) NSDate *dateToday; 2)在保存方法中,我做了以下事情:

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 回答