- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个简单的应用程序:用户在 UIDatePicker 中选择一个日期并填写一些字段并通过核心数据保存, TableView Controller 应该只显示在日期选择器中选择的年份列表.如果某人选择了 1 个年份为 2013 年的日期,然后选择了另一个年份,则 TableView 中应该只有 1 个 2013 年条目。
我有用于重复检查的后端逻辑。我的问题是 FetchedResultsController 中此 TableView Controller 上的实际谓词。这导致我的日期为零,Xcode 也给我一条幽默的消息!
date cannot be nil
I mean really, what do you think that operation is supposed to mean with a nil date?
An exception has been avoided for now.
A few of these errors are going to be reported with this complaint, then further violations will simply silently do whatever random thing results from the nil.
执行谓词的代码是:
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar components:(NSYearCalendarUnit ) fromDate:self.date.dateOfEvent];
//create a date with these components
NSDate *startDate = [calendar dateFromComponents:components];
[components setYear:components.year]; //reset the other components
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"dateOfEvent == %@",startDate];
NSLog(@"New Date = %@", startDate);
我有一个名为 date 的 Date 实体属性,dateOfEvent 属性是 NSDate,我正试图在关闭的那一年中提取它!
NSLog 给我 2001-01-01 00:00:00 +0000
所以它显然没有得到那个日期。
如果有人能够协助 a) 为什么我有效地得到一个 nil 日期和 b) 关于 Xcode 错误的想法和 c) 我将如何更新 cellForRow 以仅显示年份?
谢谢!
最佳答案
首先,self.date.dateOfEvent
很可能为零。这就是讽刺性错误消息所表明的内容。但是,您的日志消息似乎包含有效的年份,因此也许使用调试器单步执行代码会有所帮助。
第二,[components setYear:components.year]
与
相同components.year = Components.year
绝对不执行任何操作。仅包含年的组件中的日期将没有月、日、小时等(它们都为零)。
第三,只有当数据库中的日期完全相同(精确到秒)时,谓词才会返回一个值,但情况可能并非如此。假设您要查看某一年,您需要构造一个日期间隔来查找相关记录。
NSInteger year = 2011;
NSDateComponents *components = [[NSDateComponents alloc] init];
components.year = year;
NSDate *startOfYear = [[NSCalendar currentCalendar] dateFromComponents:components];
components.year = 1; // (one year)
NSDate *endOfYear = [[NSCalendar currentCalendar] dateByAddingComponents:components
toDate:startOfYear options:0];
然后使用这样的谓词:
[NSPredicate predicateWithFormat:
@"dateOfEvent > %@ && dateOfEvent <= %@", startOfYear, endOfYear];
关于ios - 谓词,从 NSDate 按年份过滤,生成零日期和讽刺的 Xcode 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20369731/
我正在使用 Irony DSL 框架来解析一种语言。该语言允许在不使用引号 (") 的情况下编写字符串,即使它们包含特殊字符,如点 (.) 或减号 (-)。 如果我编辑我得到的文本文件,那么字符串周围
我是一名优秀的程序员,十分优秀!