我有一个类,我们称之为ABC,带有NSArray * objects属性,NSArray中的对象可以是两个不同类别中的一个,X和Y.X和Y都有路径属性,但编译器不知道这一点。
因此,即使ABC总是在我的数组对象上找到路径属性,我的代码上也会收到编译器警告 - “找不到'路径'方法”。应用程序运行良好,但我对这些警告感到恼火。如何修复我的代码(使用协议?)以便编译器停止抱怨?
谢谢!
答案 0 :(得分:2)
X和Y都来自包含“path”的同一个超类吗?如果“path”在概念上是相同的值,并且X和Y与该值相关,那么它应该是超类或协议。
此外,您可以使用NSKeyValueCoding
协议通过- (id)valueForKey:(NSString *)key
按字符串直接访问值。但是,使用此方法确实会失去任何类型的安全性。
答案 1 :(得分:2)
您需要导入一些声明path
方法的标头。在编译代码时,编译器会查看此文件所知道的方法列表,并发现没有path
方法。你只需要告诉它该方法存在,它的签名是什么,编译器将满足。没有必要的协议。
答案 2 :(得分:1)
valueForKey:@"path"