Rumah  >  Artikel  >  pembangunan bahagian belakang  >  gomobile: Nilai pulangan ralat pada iOS mempunyai nilai pulangan NSError dan Boolean

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

WBOY
WBOYke hadapan
2024-02-14 16:45:081098semak imbas

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
}

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

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

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

@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:)
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
}
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!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam
Artikel sebelumnya:Unmarshaling asn gagalArtikel seterusnya:Unmarshaling asn gagal