嗨我目前有一个表视图,通过核心数据填充.
我使用NSPredicate限制结果,以便只有具有相同OrderNumber的项目才会显示在tableView中.
NSPredicate *predicate = [NSPredicate predicateWithFormat:
@"orderNumber == %@", orderNumberLabel.text];
NSLog(@"predicate is: %@",predicate);
[fetchRequest setPredicate:predicate];
Run Code Online (Sandbox Code Playgroud)
一旦完成了输入订单的表单,按下按钮[保存订单],然后将orderNumber加1,以及orderNumberLabel.
我期望发生的是tableView应该是空的,因为新的orderNumber在sql数据库中没有条目.但是这不会发生并调用[myTableView reloadData]; 也解决不了.
但是,如果我退出项目并重新运行它,我有新的orderNumber和一个空的tableView.因此,在运行时发生了一些事情,其中设置了获取请求和谓词,我需要尝试通过saveOrderButtonPressed方法中的调用进行复制.唯一的问题是我不知道该怎么做,有人可以帮忙吗?
有时在输入订单后退出并重新运行应用程序后,我也遇到以下错误.它与我更改orderNumber有关,但我认为一旦我更新谓词/ fetchRequest它就会消失.我还需要一些指导,我需要禁用缓存吗?
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException',
reason:'FATAL ERROR: The persistent cache of section information does not match
the current configuration. You have illegally mutated the NSFetchedResultsController's
fetch request, its predicate, or its sort descriptor without either disabling
caching or using +deleteCacheWithName:'
Run Code Online (Sandbox Code Playgroud) iphone objective-c uitableview nspredicate nsfetchedresultscontroller
我有一个简单的查询,但不知道如何做到这一点.
这就是我想要实现的目标:1)我有一个今天日期的UILabel即"29/04/12"2)午夜我希望该标签自行更新为"30/04/12"而无需更改查看或按任何东西.
这是我不知道该怎么做的第2步.我知道它将如何完成,例如可能获得日期更改的系统通知(如果这是可能的)或使用某种计时器作为触发器.
任何帮助将不胜感激,提前感谢.
我想让用户只选择输入数字.iPad的数字键盘弹出其他符号等.是否可以在iPad应用程序中获得iPhone版本的数字键盘?
我试图以一种简单的方式增加一个数字,不会导致重复或丢失数字.这个数字最终将作为订单号存储在我的coreData实体的一个字段中,这就是为什么我不能有重复或错过的数字.
我有一个输入订单的视图,当它初始化时,它必须提供正确的订单号,这是我编码的:
-(void) viewDidLoad {
// If no orders have previously been entered the order number will be changed from 0 to 1
if (orderNumber == 0) {
orderNumber = orderNumber + 1;
}
// If orders have previously been entered the order number will be given the value that has previously been stored in orderNumber
else orderNumber = orderNumber;
NSLog(@"The Order Number is %d",orderNumber);
}
Run Code Online (Sandbox Code Playgroud)
当视图上的表单完成后,按下完成按钮,这将完成订单.清除视图上的所有文本字段,并将订单号增加1,以便输入下一个订单.
-(void) doneButtonTapped:(id)sender{
orderNumber = orderNumber + 1;
NSLog(@"orderNumber is increased to %d",orderNumber);
} …Run Code Online (Sandbox Code Playgroud) 嗨我希望能够在我的CoreData数据库中对一个属性(rowTotal)求和,之后它被我在获取结果控制器中的谓词过滤掉了.结果将是订单的小计.
最初我以为我可以在某种程度上只是总结tableCells中显示的值,但我已经读到这不能很好地工作,因为可能只有10个tableCells用于100个项目.
我已经阅读了一个类似的问题(链接如下),该问题涉及将总和放入节标题中.我想要一个变体,我希望在managedObjectContext发生任何更改后,显示和更新总和为UILabel.
我试过以下代码:
float subtotal = 0;
for (NSManagedObject *object in [self.fetchedResultsController fetchedObjects]) {
NSNumber *objectRowTotalNumber = [object valueForKey:@"rowTotal"];
float objectRowTotal = [objectRowTotalNumber floatValue];
subtotal = subtotal + objectRowTotal;
}
NSLog(@"Subtotal: %f", subtotal);
Run Code Online (Sandbox Code Playgroud)
我已经在我的代码中的多个位置尝试过,看看我是否可以让它工作.我没有成功,并且使用此代码在tableView中不显示数据.我认为它的下面一行给了我悲伤.
for (NSManagedObject *object in [self.fetchedResultsController fetchedObjects])
Run Code Online (Sandbox Code Playgroud)
我感觉它实际上创建了一个新的托管对象并干扰了我所拥有的对象.
这是我获取的结果控制器的代码
- (NSFetchedResultsController *)fetchedResultsController {
NSLog(@"I'm inside the method fetchedResultsController");
/*
Set up the fetched results controller.
*/
// Create the fetch request for the entity.
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
// Edit the entity name …Run Code Online (Sandbox Code Playgroud) iphone ×4
objective-c ×4
ios ×3
core-data ×1
increment ×1
int ×1
ipad ×1
nsdate ×1
nsnumber ×1
nspredicate ×1
numpad ×1
uilabel ×1
uitableview ×1