2016-11-09 3 views
1

Ich habe in letzter Zeit ein SiriKit-Ziel in meiner Anwendung eingerichtet, aber ich kann keinen darin enthaltenen App-Code referenzieren.Wie wird der App-Code von einer SiriIntent-Erweiterung referenziert?

Ich habe meine App Ziel zum Sirikit Ziel Build Targets-> Target Abhängigkeiten Abschnitt hinzugefügt, aber ich habe noch die folgenden Fehlermeldungen erhalten:

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) 

Wo der Name einer App Klasse I zu verweisen versuchen in der IntentHandler.m-Klasse.

Ich bin in der Lage, die App-Code-Klasse zu importieren, die ich gut verwenden muss, aber wenn ich versuche, es im tatsächlichen Code zu verwenden, führt es zum Fehler.

Alles "scheint" gut mit dem Code auch, was seltsam ist. Die Syntax-Hervorhebung funktioniert, Strg + Klick bringt mich zu der entsprechenden Klasse usw., so dass es die Klasse zu einem bestimmten Zeitpunkt eindeutig findet, nur nicht dort, wo es am wichtigsten ist!

Mein Code ist wie folgt:

#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 

Antwort

0

Hier ist die Klasse Helper.swift können den Zugriff sein von meine app und Erweiterung. Tun Sie wie folgt.

1.

enter image description here

  1. Go-Inspektoren in der rechten Seite von Xcode einzureichen.

enter image description here

  1. Mein Code in der Erweiterung.

enter image description here

Hinweis: In obj-c müssen Sie obigen Schritte für .h und .m-Dateien tun.

+0

Vermutlich bedeutet das, dass alle Abhängigkeiten, die die Datei Helper.swift verwendet, auch in das SiriKitDemoExtension-Ziel aufgenommen werden müssen, richtig? Enthält das SiriKitDemo als Zielabhängigkeit nicht alle Dateien, die zu diesem Ziel gehören? – Zach

+0

Ja, wir müssen die Abhängigkeiten-Datei von Helper.swift zu sirikitDemoExtension target hinzufügen, andernfalls wird ein Fehler ausgegeben. –

Verwandte Themen