- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
尝试使用此方法比较从 NSPersistentStoreCoordinatorStoresDidChangeNotification
接收到的值时出现以下错误
// Check type of transition
if let type = n.userInfo?[NSPersistentStoreUbiquitousTransitionTypeKey] as? UInt {
FLOG(" transition type is \(type)")
if (type == NSPersistentStoreUbiquitousTransitionType.InitialImportCompleted) {
FLOG(" transition type is NSPersistentStoreUbiquitousTransitionTypeInitialImportCompleted")
}
}
但是我得到以下编译错误
NSPersistentStoreUbiquitousTransitionType is not convertible to UInt
就在我认为自己掌握了 Swift 的诀窍时,我又被难住了!
最佳答案
这种情况很少见,编译器实际上会告诉您到底出了什么问题! type
是一个 UInt
,而 NSPersistentStoreUbiquitousTransitionType.InitialImportCompleted
是枚举的一种情况。要比较它们,您需要将它们放在同一页面上——获取枚举的原始值可能是最安全的:
if (type == NSPersistentStoreUbiquitousTransitionType.InitialImportCompleted.toRawValue()) {
FLOG(" transition type is NSPersistentStoreUbiquitousTransitionTypeInitialImportCompleted")
}
注意:在 Xcode 6.1 中,枚举略有变化,因此您可以使用 .rawValue
而不是 .toRawValue( )
。
要以另一种方式处理它,您需要将通知中的数据转换为枚举值。文档说:“相应的值是作为 NSNumber 对象的 NSPersistentStoreUbiquitousTransitionType 枚举值之一。”所以你的代码的第一部分是正确的,然后你需要使用枚举的 fromRaw(number)
静态方法:
if let type = n.userInfo?[NSPersistentStoreUbiquitousTransitionTypeKey] as? Uint {
// convert to enum and unwrap the optional return value
if let type = NSPersistentStoreUbiquitousTransitionType.fromRaw(type) {
// now you can compare directly with the case you want
if (type == .InitialImportCompleted) {
// ...
}
}
}
注意:在 Xcode 6.1 中,您将使用 NSPersistentStoreUbiquitousTransitionType(rawValue: type)
而不是 fromRaw()
方法。
关于swift - 如何比较 NSPersistentStoreUbiquitousTransitionType 枚举值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26226589/
尝试使用此方法比较从 NSPersistentStoreCoordinatorStoresDidChangeNotification 接收到的值时出现以下错误 // Check type of tra
我是一名优秀的程序员,十分优秀!