Xcode 9 NSManagedObject 的 Date 与 NSDate 的构建问题
Xcode 9 build issue with Date vs NSDate for NSManagedObject
Xcode 9 为模拟器和设备中实体的 Date
类型属性生成不同的代码。我在 coredata.
中将 Class
下的 codegen
功能设置为 category/extension
直到 Xcode 8.3(最新)一切正常(NSDate
始终)。下面是 由 Xcode 9 (Swift 4) 为属性 -
自动生成的代码
在设备上:-
@NSManaged public var requiredDate: Date?
并且,
在模拟器上:-
@NSManaged public var requiredDate: NSDate?
有人遇到过这个问题吗?对于一个拥有 50 多个成员的项目来说,在 Xcode 更新修复它之前解决这个问题的最佳解决方案是什么(我希望有一个苹果雷达)?
让我自己回答这个问题。这些是我的观察(到目前为止)和可能的解决方案。
这个问题似乎RANDOM。突然,问题消失了,codegen
终于在模拟器和设备上解决了 Date
。
但是,我应用了基于宏的解决方案(现在不再需要)来解决它 -
// Workaround for Xcode 9 bug. The autogenerated code for 'Date' type attribute is NSDate vs Date based on device vs simualtor.
// This macro condition should be removed once an Xcode update fixes this issue
#if (arch(i386) || arch(x86_64)) // Simulator
requiredDate <- (map["requiredDate"], NSDateTransform()) // milliseconds to NSDate
#else // Device
requiredDate <- (map["requiredDate"], DateTransform()) // milliseconds to Date
#endif
PS:我记得我至少在 iPhone SE Simulator,iPhone 7 device
上测试过它
Xcode 9 为模拟器和设备中实体的 Date
类型属性生成不同的代码。我在 coredata.
Class
下的 codegen
功能设置为 category/extension
直到 Xcode 8.3(最新)一切正常(NSDate
始终)。下面是 由 Xcode 9 (Swift 4) 为属性 -
在设备上:-
@NSManaged public var requiredDate: Date?
并且,
在模拟器上:-
@NSManaged public var requiredDate: NSDate?
有人遇到过这个问题吗?对于一个拥有 50 多个成员的项目来说,在 Xcode 更新修复它之前解决这个问题的最佳解决方案是什么(我希望有一个苹果雷达)?
让我自己回答这个问题。这些是我的观察(到目前为止)和可能的解决方案。
这个问题似乎RANDOM。突然,问题消失了,codegen
终于在模拟器和设备上解决了 Date
。
但是,我应用了基于宏的解决方案(现在不再需要)来解决它 -
// Workaround for Xcode 9 bug. The autogenerated code for 'Date' type attribute is NSDate vs Date based on device vs simualtor.
// This macro condition should be removed once an Xcode update fixes this issue
#if (arch(i386) || arch(x86_64)) // Simulator
requiredDate <- (map["requiredDate"], NSDateTransform()) // milliseconds to NSDate
#else // Device
requiredDate <- (map["requiredDate"], DateTransform()) // milliseconds to Date
#endif
PS:我记得我至少在 iPhone SE Simulator,iPhone 7 device
上测试过它