Ash*_*hok 7 xcode date core-data nsmanagedobject codegen
Xcode 9为Date模拟器与设备中的实体的类型属性生成不同的代码.我在coredata中设置了codegen功能.Classcategory/extension
直到Xcode 8.3(最新)它一切正常(NSDate总是).下面是Xcode 9(Swift 4)为属性自动生成的代码 -
在设备上: -
@NSManaged public var requiredDate: Date?
Run Code Online (Sandbox Code Playgroud)
和,
在模拟器上: -
@NSManaged public var requiredDate: NSDate?
Run Code Online (Sandbox Code Playgroud)
有谁遇到过这个问题?对于一个有50多个成员的项目来解决这个问题的最佳解决方案是什么,直到Xcode更新修复它(我希望有一个苹果雷达)?
我自己回答一下.这些是我的观察(到目前为止)和潜在的解决方案.
这个问题似乎是随机的.突然之间,这个问题已经消失,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
Run Code Online (Sandbox Code Playgroud)
PS:我记得我测试过它至少在iPhone SE Simulator,iPhone 7设备上运行
| 归档时间: |
|
| 查看次数: |
638 次 |
| 最近记录: |