פתרון בעיות במקרה של שגיאות

בקטע הזה נסביר איך לטפל בשגיאות.

טיפול בשגיאות של update_mask

כשGMTDDeliveryVehicleReporter שולח עדכון רכב, עשויה להתרחש שגיאה מסוג update_mask אם פרמטר השאילתה updateMask ריק. כדי למנוע את השגיאה הזו, תמיד צריך לציין שם של שדה אחד לפחות. בדרך כלל הוא מתרחש בעדכון הראשון אחרי ההפעלה. למידע נוסף על עדכון שדות של כלי רכב ב-Fleet Engine, ראו עדכון שדות של כלי רכב.

בדוגמה הבאה מוסבר איך לטפל בשגיאה הזו:

import GoogleRidesharingDriver

class VehicleReporterListener: NSObject, GMTDVehicleReporterListener {
  func vehicleReporter(
    _ vehicleReporter: GMTDVehicleReporter,
    didFail vehicleUpdate: GMTDVehicleUpdate,
    withError error: Error
  ) {
    let fullError = error as NSError
    if let innerError = fullError.userInfo[NSUnderlyingErrorKey] as? NSError {
      let innerFullError = innerError as NSError
      if innerFullError.localizedDescription.contains("update_mask cannot be empty") {
        emptyMaskUpdates += 1
        return
      }
    }
    failedUpdates += 1
  }

  override init() {
    emptyMaskUpdates = 0
    failedUpdates = 0
  }
}

#import "VehicleReporterListener.h"
#import <GoogleRidesharingDriver/GoogleRidesharingDriver.h>

@implementation VehicleReporterListener {
  NSInteger emptyMaskUpdates = 0;
  NSInteger failedUpdates = 0;
}

- (void)vehicleReporter:(GMTDVehicleReporter *)vehicleReporter
  didFailVehicleUpdate:(GMTDVehicleUpdate *)vehicleUpdate
             withError:(NSError *)error {
  for (NSError *underlyingError in error.underlyingErrors) {
    if ([underlyingError.localizedDescription containsString:@"update_mask cannot be empty"]) {
      emptyMaskUpdates += 1;
      return;
    }
  }
  failedUpdates += 1
}

@end