Sự khác biệt giữa ‘init?()’ và ‘init()’ là gì?

{{FormatNumbertoThousand(model.total_like)}} lượt thích
75 lượt xem
Swift master

init?() là một trình khởi tạo khả dụng và có thể trả về nil chứ không phải là một giá trị nếu có sự cố xảy ra trong quá trình tạo.

struct Person {
   var ssn: String

   init?(socialSecurityNumber: String) {
      if socialSecurityNumber.count < 11 {
         return nil
      } else {
         self.ssn = socialSecurityNumber
      }
   }
}

Bộ khởi tạo bây giờ được gọi là init?() để phản ánh rằng nó trả về một tùy chọn - quá trình có thể trả về nil nếu quá trình tạo không thành công.

{{login.error}}