2016-02-04 4 views
0

Так сказать, если у меня есть класс A. Затем я создаю новый быстрый файл для класса B, где он будет выглядеть следующим образом:Как вызвать функцию класса из другого расширения классов в Swift

extension Class A { 

public Class B: Superclass { 

    public class func doSomething() { } 

} 

} 

сейчас как я позвоню doSomething()?

+0

от того, что контекст? – jtbandes

+0

Вызов его из другого отдельного класса Swift. Скажем, например, класс C. – Jonathan

+0

Создайте переменную типа B в классе A и сделайте ее доступной как общедоступную переменную или через функцию? –

ответ

3

Если вы хотите добавить внутренний класс к существующему классу с помощью расширения, вы можете сделать это следующим образом:

public class A { 

} 

public extension A { 

    public class B { 

     public class func doSomething() { 
      print("hello") 
     } 

    } 

} 

Примечание там нет Superclass.

Поскольку doSomething является методом класса, вы можете назвать это так:

A.B.doSomething() // "hello" 

Если вы пытаетесь определить подкласс A, то вы должны сделать это:

public class A { 

} 

public class B: A { 

     public class func doSomething() { 
      print("hello") 
     } 

} 

B.doSomething() // "hello" 
+0

Это правильный способ сделать это, который изначально не работал. Оказывается, он не работает, потому что Xcode не нашел подкаталог, который содержал класс B. С тех пор я исправил это, и теперь он работает. Я считаю, что проблема могла быть связана с Swift, потому что я просто переключился на нее и все еще учился. – Jonathan

0

Как вы относитесь к этому:

public class A { 
     var innerClass = InnerClass() 
} 

extension A { 
    public class InnerClass { 
      public class func doSomething() { } 
    } 
} 

public class C { 
    var test = A().innerClass 
} 
+0

Я пытаюсь получить доступ к методу без изменения существующих классов. Причина в том, что эти классы будут обновляться в будущем извне, и я не хочу изменять что-либо на моем конце. – Jonathan

Смежные вопросы