使用 KVC 在核心数据中设置日期
Setting date in core data with KVC
这让我有点困惑。
出于某种原因,我可以通过 属性 设置日期,但尝试使用 KVC 以相同的方式设置它会导致错误。
我正在努力使我的代码更通用,所以我真的很想能够通过 KVC 设置我的日期,考虑到我的 NSManagedObject 定义如下。
这不是我的项目,而且它是一个非常大的项目,所以我需要在现有的基础上工作。
我读过这篇文章,但它并没有完全解决这个特定问题...
Why is an NSDate in a Core Data managed Object converted to NSTimeInterval?
在核心数据建模器中...
NSManagedObject SomeClass
updateDate Date
代码中...
NSManagedObject SomeClass
@property (nonatomic) NSTimeInterval updateDate
所以在一个方法中,我看到通过 属性 设置时执行此操作的代码,它工作得很好,但不是通用的。
someClass.updateDate = [NSDate date] timeIntervalSinceReferenceDate
我不能通过 KVC 做到这一点,因为 setValue:
需要一个 ID,所以它失败并出现此编译时错误'将 NSTimeInterval 发送到不兼容类型的参数 'id_Nullable'' 当通过 KVC
完成同样的操作时
[someClass setValue:[NSDate date].timeIntervalSinceReferenceDate forKey:@"updateDate"];
解决此问题的建议,以便我可以使用 KVC 设置我的日期。
非常感谢
如果将 NSNumber 传递给 setValue:forKey:
,如果 属性 是原始类型,它会自动拆箱。所以你应该可以做到 [someClass setValue:@([[NSDate date] timeIntervalSince1970]) forKey:@"updateDate"]
.
这让我有点困惑。 出于某种原因,我可以通过 属性 设置日期,但尝试使用 KVC 以相同的方式设置它会导致错误。
我正在努力使我的代码更通用,所以我真的很想能够通过 KVC 设置我的日期,考虑到我的 NSManagedObject 定义如下。 这不是我的项目,而且它是一个非常大的项目,所以我需要在现有的基础上工作。
我读过这篇文章,但它并没有完全解决这个特定问题...
Why is an NSDate in a Core Data managed Object converted to NSTimeInterval?
在核心数据建模器中...
NSManagedObject SomeClass
updateDate Date
代码中...
NSManagedObject SomeClass
@property (nonatomic) NSTimeInterval updateDate
所以在一个方法中,我看到通过 属性 设置时执行此操作的代码,它工作得很好,但不是通用的。
someClass.updateDate = [NSDate date] timeIntervalSinceReferenceDate
我不能通过 KVC 做到这一点,因为 setValue:
需要一个 ID,所以它失败并出现此编译时错误'将 NSTimeInterval 发送到不兼容类型的参数 'id_Nullable'' 当通过 KVC
[someClass setValue:[NSDate date].timeIntervalSinceReferenceDate forKey:@"updateDate"];
解决此问题的建议,以便我可以使用 KVC 设置我的日期。
非常感谢
如果将 NSNumber 传递给 setValue:forKey:
,如果 属性 是原始类型,它会自动拆箱。所以你应该可以做到 [someClass setValue:@([[NSDate date] timeIntervalSince1970]) forKey:@"updateDate"]
.