首頁 >後端開發 >Golang >gomobile:iOS 上的錯誤回傳值同時具有 NSError 和布林回傳值

gomobile:iOS 上的錯誤回傳值同時具有 NSError 和布林回傳值

WBOY
WBOY轉載
2024-02-14 16:45:081132瀏覽

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

php小編西瓜今天為大家介紹一款名為"gomobile"的工具,它在iOS開發中提供了一種便捷的方式來處理錯誤回傳值。與傳統的方式不同,gomobile可以同時傳回NSError物件和布林值,讓開發者更有彈性地處理錯誤狀況。這個工具在開發過程中能夠大幅提高開發效率,並減少錯誤處理的複雜度。以下我們將詳細介紹gomobile的使用方法和優勢,希望對大家有幫助。

問題內容

當在ios 上透過gomobile 使用gobind 作為介面類型時,golang 函數傳回error 會對objective c 中的類別產生2 個影響(範例如下):

  • 包含傳入的 nserror 指標
  • 該方法傳回一個布林值

我可以推斷如何使用 nserror 指針,這是標準的 objective c 實踐。但是我應該為布林值傳回什麼值? true 表示錯誤,false 表示成功?相反?還有別的事嗎?我似乎無法在任何地方找到文檔。

範例

這樣的介面:

type a interface {
  dothing(data *datatype) error
}

取得如下所示的目標 c 介面:

@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

解決方法

在objective-c 中,執行可能導致錯誤的操作的方法標準是傳回指示成功或失敗的布林值,使用yes 表示成功,使用no 表示失敗,並接受nserror ** 參數以提供錯誤必要時詳細說明。

將此套用至 gomobilegobind,您應該以相同的方式處理布林傳回值。

對於您的 go 介面:

type a interface {
  dothing(data *datatype) error
}

gomobile 將產生一個 objective-c 接口,例如(正如您所提到的):

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

objective-c 方法將會是:

- (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
}

在此模式中,gomobile 遵循與apple 的objective-c 方法相同的約定,即傳回一個指示操作成功的布林值,並使用可選的nserror 來詳細說明發生的任何錯誤。

以上是gomobile:iOS 上的錯誤回傳值同時具有 NSError 和布林回傳值的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除
上一篇:解組 asn 失敗下一篇:解組 asn 失敗