Heim > Backend-Entwicklung > Golang > gomobile: Der Fehlerrückgabewert unter iOS hat sowohl einen NSError- als auch einen booleschen Rückgabewert

gomobile: Der Fehlerrückgabewert unter iOS hat sowohl einen NSError- als auch einen booleschen Rückgabewert

WBOY
Freigeben: 2024-02-14 16:45:08
nach vorne
1135 Leute haben es durchsucht

gomobile:iOS 上的错误返回值同时具有 NSError 和布尔返回值

PHP-Editor Xigua stellt Ihnen heute ein Tool namens „gomobile“ vor, das eine bequeme Möglichkeit bietet, Fehlerrückgabewerte in der iOS-Entwicklung zu verarbeiten. Im Gegensatz zur herkömmlichen Methode kann gomobile sowohl NSError-Objekte als auch boolesche Werte zurückgeben, sodass Entwickler Fehlersituationen flexibler handhaben können. Dieses Tool kann die Entwicklungseffizienz erheblich verbessern und die Komplexität der Fehlerbehandlung während des Entwicklungsprozesses verringern. Im Folgenden stellen wir die Verwendung und Vorteile von Gomobile im Detail vor und hoffen, für alle hilfreich zu sein.

Frageninhalt

Bei Verwendung von Gobind als Schnittstellentyp über Gomobile unter iOS gibt die Golang-Funktion error zurück, was zwei Auswirkungen auf die Klasse in Objective C hat (Beispiele sind wie folgt):

  • Enthält den übergebenen NSerror-Zeiger
  • Diese Methode gibt einen booleschen Wert zurück

Ich kann ableiten, wie man den nserror-Zeiger verwendet, was der Standardpraxis von Objective C entspricht. Aber welchen Wert sollte ich für boolean zurückgeben? wahr bedeutet Fehler, falsch bedeutet Erfolg? andererseits? Irgendetwas anderes? Ich kann anscheinend nirgendwo eine Dokumentation finden.

Beispiel

Eine Schnittstelle wie diese:

type a interface {
  dothing(data *datatype) error
}
Nach dem Login kopieren

Holen Sie sich die Objective-C-Schnittstelle wie unten gezeigt:

@interface PackageA : NSObject <goSeqRefInterface, PackageA> {
}
@property(strong, readonly) _Nonnull id _ref;
- (nonnull instancetype)initWithRef:(_Nonnull id)ref;

// Important bit is here:
- (BOOL)doThing:(data* _Nullable)DataType error:(NSError* _Nullable* _Nullable)error;
@end
Nach dem Login kopieren

Workaround

In Objective-C besteht die Standardmethode zum Ausführen einer Operation, die zu einem Fehler führen kann, darin, einen booleschen Wert zurückzugeben, der Erfolg oder Misserfolg angibt, wobei der yes 表示成功,使用 no 表示失败,并接受 nserror **-Parameter verwendet wird, um bei Bedarf Fehlerdetails bereitzustellen.

Wenden Sie dies auf gomobilegobind und gobind an

und Sie sollten mit dem enden Auf die gleiche Weise werden boolesche Rückgabewerte verarbeitet.

Für Ihre Go-Schnittstelle:

type a interface {
  dothing(data *datatype) error
}
Nach dem Login kopieren
gomobile

generiert eine Objective-C-Schnittstelle wie (wie Sie erwähnt haben):

@interface packagea : nsobject
- (bool)dothingwithdata:(datatype *)data error:(nserror **)error;
@end
Nach dem Login kopieren
[ go interface ]          [ gomobile binding ]        [ obj-c interface ]
    a (dothing)   --->      gobind (error)     --->   packagea (dothing:error:)
Nach dem Login kopieren

Objective-C-Methode wäre:

- (BOOL)doThingWithData:(DataType *)data error:(NSError **)error {
    BOOL success = your-operation(); // Attempt to do the thing
    if (!success) {
        // An error occurred, populate the error if it is not NULL
        if (error != NULL) {
            *error = [NSError errorWithDomain:@"YourErrorDomain"
                                         code:YourErrorCode
                                     userInfo:@{NSLocalizedDescriptionKey: @"An error occurred"}];
        }
        return NO; // Return NO to indicate failure
    }
    return YES; // Return YES to indicate success
}
Nach dem Login kopieren
gomobile 遵循与 apple 的 objective-c 方法相同的约定,即返回一个指示操作成功的布尔值,并使用可选的 nserrorIn diesem Modus folgt der gleichen Konvention wie die Objective-C-Methoden von Apple, die darin besteht, einen booleschen Wert zurückzugeben, der den Erfolg des Vorgangs angibt, und den optionalen nserror zu verwenden, um aufgetretene Fehler detailliert darzustellen. 🎜

Das obige ist der detaillierte Inhalt vongomobile: Der Fehlerrückgabewert unter iOS hat sowohl einen NSError- als auch einen booleschen Rückgabewert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage