使用每个新条目向表顶部的表视图控制器添加新条目

时间:2013-10-14 06:07:20

标签: ios core-data tableview nssortdescriptor

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

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

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

我已经实现了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"];

任何想法都将不胜感激!

3 个答案:

答案 0 :(得分:2)

您可以通过

在地方插入新记录
 [self.tableview insertRowsAtIndexPaths:indexPath withRowAnimation:YES ];

您也可以通过更新阵列来完成它。

You can add object to as:

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

然后用新数组重新加载表:

 [yourTable reloadData]

这对你有用。

答案 1 :(得分:1)

您还可以通过核心数据提取请求降序获得答案。

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];

答案 2 :(得分:0)

如果有人正在阅读本文,我已将此问题排除在外以供将来参考。

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

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