Aby udostępnić kod i zasobów między mojej aplikacji i rozszerzeń, I osadzić Cocoa Touch Framework
w moim projekcie, to framework zawiera pewne zasoby, takie jak obraz i plików XIB.iOS 8: uzyskać zasób z kakao ram dotykowym
Moje pytanie brzmi: w jaki sposób mogę uzyskać dostęp do tych zasobów od maja głównej aplikacji i rozszerzeń?
Ja używałem tej metody: iOS 8 Extension: how to use xib inside Cocoa Touch Framework in extensions?
ale to zrobić kopię do wszystkich zasobów w aplikacji pakietu oraz pakiet rozszerzeń, co nie jest dobrym powtarzać.
Czy istnieje lepszy sposób?
Aktualizacja:
Teraz moim głównym aplikacja może użyć kodu tak, aby uzyskać dostęp do zasobów w ramach:
+(NSBundle*)frameworkBundle
{
NSString *frameworkDirPath = [[NSBundle mainBundle] privateFrameworksPath];
NSString *frameworkBundlePath = [frameworkDirPath stringByAppendingPathComponent:@"MyFramework.framework"];
NSBundle *frameworkBundle = [NSBundle bundleWithPath:frameworkBundlePath];
return frameworkBundle;
}
ale to nie działa dla rozszerzeń.
To rzuca inną trasą niż kod, który jest w pytaniu, dlaczego? co powinniśmy użyć? – Gabox
Tworzenie pakietu za pomocą opcji bundleForClass jest lepsze niż tworzenie ścieżki. I wobec tego problemu podczas rozwoju, w którym się zużywa CoreData plik momd z testu aplikacji, po czym przekształca się aplikację do ramy i dodano momd jako surowca. Teraz aplikacja testu, który zużywa plik momd szukał go w mainBundle, natomiast teraz jest nieprawidłowy. plik momd jest przenoszony wewnątrz struktury. Dlatego zawsze używaj bundleForClass i dostarczaj klasę najbliższą/bezpośrednio korzystającą z zasobu. – Omkar