Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/121.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift-具有不同方法名称但仍不工作的多个扩展_Ios_Swift_Xcode - Fatal编程技术网

Ios Swift-具有不同方法名称但仍不工作的多个扩展

Ios Swift-具有不同方法名称但仍不工作的多个扩展,ios,swift,xcode,Ios,Swift,Xcode,我有两个框架项目(A和B),在这两个框架中我都有一个UIViewController扩展 我在框架B中的扩展有方法“loadFromNib” 在框架“B”中,我有访问“loadFromNib”的类 在框架“B”中,我也指框架“A” 现在,我已将UIViewController扩展添加到框架“A”,但名称为“loadViewFromNib” 现在,我的现有类抛出loadFromNib不可用的错误,并建议我访问loadViewFromNib方法。我在这里错过了什么。为什么我的类没有引用正确的扩展名

我有两个框架项目(A和B),在这两个框架中我都有一个UIViewController扩展

  • 我在框架B中的扩展有方法“loadFromNib”
  • 在框架“B”中,我有访问“loadFromNib”的类
  • 在框架“B”中,我也指框架“A”
  • 现在,我已将UIViewController扩展添加到框架“A”,但名称为“loadViewFromNib” 现在,我的现有类抛出loadFromNib不可用的错误,并建议我访问loadViewFromNib方法。我在这里错过了什么。为什么我的类没有引用正确的扩展名

    //Code from Framework B
    extension UIViewController
    {
        public class func loadFromNib() -> Self?
        {
            return loadNibFilePrivateMethod()
        }
        ....
    }
    
    //Code from Framework A
    extension UIViewController
    {
        public class func loadViewFromNib() -> Self?
        {
            return loadNibFilePrivateMethod()
        }
        ....
    }
    
    我正在将多个其他框架(由其他团队拥有)中的公共代码合并到框架A中,并且不能修改任何其他框架中的任何内容。所以我希望我的代码能够共存而不破坏任何东西

    现在,我的现有类抛出loadFromNib不可用的错误

    可能是因为您试图从声明它的框架之外使用
    loadFromNib
    ?(这就是错误消息…不可用的意思)

    当您希望一个方法/类型/函数可用于其他模块(想想框架、目标)时,您需要将它们声明为
    public

    因此,要解决您的问题,请声明您的方法

    public func loadFromNib(…)

    而且它很可能是可用的

    更新


    您是在viewcontroller实例上还是在视图上调用这些方法?名称表明它们的预期用途不明确。

    现在我的现有类抛出错误,loadFromNib不可用
    是框架B中的类吗?请显示一些代码。首先,框架a中的
    loadFromNib
    的定义@JeremyP用一些代码更新了帖子。@Anilvarge是的,它们仍然存在于框架B中。因为我没有权限修改它们。也更新了我的帖子。当我使用myView.loadFromNib()时,您是否在源文件顶部引用了
    loadFromNib
    从框架B中,我得到错误类型myView没有成员“loadFromNib”。这是框架B中的现有代码,并且很早就开始工作。在我将新扩展添加到框架后,我看到此消息A@Tamil我看到
    loadFromNib
    是UIVIewController的扩展。
    myView.loadFromNib()
    此时将不起作用。请检查是否调用视图或控制器对象