尝试使用Equatable协议中定义的'=='运算符比较AnyObject类型的两个对象会导致Swift中出现编译错误.有没有人找到比较这些对象的方法,而不知道可以用于向下转换的真实对象类型?
这个问题的背景是我有一个字典Dictionary <String,AnyObject>,其中值应该通过下标提供,然后在某些时候我需要比较字典中的值以确保它们是唯一的.
编辑 这是一个演示该问题的片段.
@objc(FooObject)
public class FooObject: NSManagedObject {
@NSManaged public var properties: Dictionary<String, AnyObject>
public subscript(property: String) -> AnyObject? {
get {
return properties[property]
}
set(newValue) {
for propertyValue in properties.values {
if propertyValue == newValue { // This line is not compiling: Cannot invoke '==' with AnyObject
println("Values in are expected to be unique!")
// Throw an exception here ...
}
}
properties[property] = newValue
}
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,在类定义中声明的类似<T:Equatable>的泛型并用作字典的值类型将无法解决问题,因为它不能与NSManagedObject子类一起使用.
我正在为Apple Watch构建一个应用程序,并希望编写一个简单的单元测试.我环顾四周,没有找到为watchOS代码添加单元测试包的单一方法.Xcode支持iOS,macOS甚至tvOS的单元测试,但不支持watchOS.有没有人做过,如果是的话,诀窍是什么?