Как ссылаться на код приложения с расширением SiriIntent?
Я недавно настроил цель SiriKit в своем приложении, но я не могу ссылаться на какой-либо код приложения внутри него.
Я добавил цель моего приложения в раздел "Построение целей-> Целевые зависимости" цели SiriKit, но все равно получаю следующие ошибки:
Undefined symbols for architecture arm64:
"_OBJC_CLASS_$_<CLASSNAME>", referenced from:
objc-class-ref in IntentHandler.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Где имя класса приложения, на которое я пытаюсь ссылаться в классе IntentHandler.m.
Я могу импортировать класс кода приложения, который мне нужно использовать, но если я попытаюсь использовать его в реальном коде, это приведет к ошибке.
Все "кажется" хорошо с кодом тоже, что странно. Подсветка синтаксиса работает, ctrl + click приводит меня к соответствующему классу и т. Д., Так что он явно находит класс в какой-то момент, но не там, где он важнее всего!
Мой код такой:
#import "IntentHandler.h"
#import "<CLASSNAME.h>
@interface IntentHandler () <INSearchForPhotosIntentHandling>
@end
@implementation IntentHandler
- (id)handlerForIntent:(INIntent *)intent {
return self;
}
#pragma mark - INSearchForPhotosIntentHandling
- (void)handleSearchForPhotos:(INSearchForPhotosIntent *)intent completion:(void (^)(INSearchForPhotosIntentResponse *response))completion {
NSUserActivity *userActivity = [[NSUserActivity alloc] initWithActivityType:NSStringFromClass([INSearchForPhotosIntent class])];
Object test = [[<CLASSNAME> instance] getObjectWithName:@"test"];
// do stuff with the test Object, which may require me to send the response as INSearchForPhotosIntentResponseCodeFailureRequiringAppLaunch
// but for now just return INSearchForPhotosIntentResponseCodeContinueInApp.
INSearchForPhotosIntentResponse *response = [[INSearchForPhotosIntentResponse alloc] initWithCode:INSearchForPhotosIntentResponseCodeContinueInApp userActivity:userActivity];
completion(response);
}
@end
1 ответ
Здесь к классу Helper.swift можно получить доступ из моего приложения и расширения. Сделайте следующим образом.
1.
- Перейдите в инспектор файлов в правой части Xcode.
- Мой код в расширении.
Примечание. В obj-c вы должны выполнить описанные выше шаги для файлов.h и.m.