Как получить stati c / перемещаемое имя фреймворка из имени класса в target- c - PullRequest
2 голосов
/ 17 апреля 2020

У меня есть строка с именем класса, и я пытаюсь получить имя платформы, к которой принадлежит класс.

То, что я пробовал:

  1. bundleForClass
Class *myClass = NSClassFromString(@"ClassName");
[NSBundle bundleForClass:myClass];

Но я не могу заставить его работать с перемещаемым / stati c типом mach-o.

Добавление нового метода в NSObject с использованием категорий
// This is on NSObject+ModuleID.h
@interface NSObject (ModuleID)
- (NSString *) moduleIdentifier;
@end

// This is on NSObject+ModuleID.m
@implementation NSObject (ModuleID)
- (NSString *) moduleIdentifier { return @"Framework Name"; }
@end

Class *myClass = NSClassFromString(@"ClassName");
[myClass moduleIdentifier];

Это не работает, так как проект включает более 1 структуры.

Добавление нового строкового свойства, содержащего имя каркаса, к каждому классу в каркасах
-(NSString *)moduleIdentifier
{ return @"Framework Name"; }

Это невозможно, поскольку число классов легко превышает сотню.

Есть какой-либо способ сделать это? Любой вклад будет оценен, спасибо!

1 Ответ

0 голосов
/ 17 апреля 2020

Попробуйте

-(NSString *)moduleIdentifier
{
    return [NSBundle bundleForClass:self.class].bundleIdentifier;
}
...