gomobile: Nilai pulangan ralat pada iOS mempunyai nilai pulangan NSError dan Boolean

WBOY
Lepaskan: 2024-02-14 16:45:08
ke hadapan
1100 orang telah melayarinya

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

Editor PHP Xigua hari ini memperkenalkan anda kepada alat yang dipanggil "gomobile", yang menyediakan cara mudah untuk mengendalikan nilai pulangan ralat dalam pembangunan iOS. Berbeza daripada kaedah tradisional, gomobile boleh mengembalikan kedua-dua objek NSError dan nilai Boolean, membolehkan pembangun mengendalikan situasi ralat dengan lebih fleksibel. Alat ini boleh meningkatkan kecekapan pembangunan dan mengurangkan kerumitan pengendalian ralat semasa proses pembangunan. Di bawah ini kami akan memperkenalkan penggunaan dan kelebihan gomobile secara terperinci, dengan harapan dapat membantu semua orang.

Kandungan soalan

Apabila menggunakan gobind sebagai jenis antara muka melalui gomobile pada ios, fungsi golang kembali error yang akan memberi 2 kesan pada kelas dalam objektif c (contoh adalah seperti berikut):

  • Mengandungi penunjuk nserror yang diluluskan
  • Kaedah ini mengembalikan nilai Boolean

Saya boleh menyimpulkan cara menggunakan penunjuk nserror, iaitu amalan Objektif C standard. Tetapi apakah nilai yang harus saya kembalikan untuk boolean? benar bermakna kesilapan, salah bermakna kejayaan? sebaliknya? Apa-apa lagi? Saya tidak dapat mencari dokumentasi di mana-mana.

Contoh

Antara muka seperti ini:

type a interface {
  dothing(data *datatype) error
}
Salin selepas log masuk

Dapatkan antara muka objektif c seperti yang ditunjukkan di bawah:

@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
Salin selepas log masuk

Penyelesaian

Dalam Objektif-C, cara standard untuk melaksanakan operasi yang mungkin mengakibatkan ralat ialah mengembalikan boolean yang menunjukkan kejayaan atau kegagalan, menggunakan parameter yes 表示成功,使用 no 表示失败,并接受 nserror ** untuk memberikan butiran ralat jika perlu.

Gunakan ini pada gomobilegobind dan gobind

dan anda sepatutnya mendapat cara yang sama untuk mengendalikan nilai pulangan Boolean.

Untuk antara muka pergi anda:

type a interface {
  dothing(data *datatype) error
}
Salin selepas log masuk
gomobile

akan menjana antara muka objektif-c seperti (seperti yang anda nyatakan):

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

objektif-c ialah:

- (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
}
Salin selepas log masuk
gomobile 遵循与 apple 的 objective-c 方法相同的约定,即返回一个指示操作成功的布尔值,并使用可选的 nserrorDalam mod ini, mengikut konvensyen yang sama seperti kaedah Objektif-C Apple, iaitu mengembalikan boolean yang menunjukkan kejayaan operasi dan menggunakan nserror pilihan untuk memperincikan sebarang ralat yang berlaku. 🎜

Atas ialah kandungan terperinci gomobile: Nilai pulangan ralat pada iOS mempunyai nilai pulangan NSError dan Boolean. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan