A ponte entre Objective-C e Swift

Há casos em que você precisa para misturar e código de correspondência entre o Objective-C e línguas Swift. Quando se trata de os quadros, os engenheiros da Apple estão trabalhando através de interfaces para fornecer interfaces Swift ao lado das versões Objective-C de modo que você pode usar qualquer um para chegar ao quadro em seu próprio aplicativo.

Às vezes você precisa usar uma ponte para chegar ao código que você precisa. Um exemplo típico ocorre quando você usar Core Data com os relacionamentos. Dado um modelo de dados para Core Data (muitas vezes fornecidos como parte de um modelo), você pode usar o Editor-Criar NSManagedObject subclasse para criar arquivos para adicionar ao seu projeto. Escolha a opção de criar arquivos Objective-C. Na parte inferior do .h arquivo que é criado, você vai encontrar declarações de métodos para membros de relações como estas:

@ interface WhereCategory (CoreDataGeneratedAccessors) - (void) addNecklaceObject: (Colar *) value-- (void) removeNecklaceObject :( Colar *) value-- (nulos) addNecklaces: (NSSet *) values-- (nulos) removNecklaceses: (NSSet *) valores - d

Este código permite-lhe adicionar ou remover objectos relacionados individuais ou todo o conjunto de objetos relacionados. Quando você tenta criar os arquivos, você verá um alerta perguntando se você gostaria de criar um cabeçalho ponte.

O arquivo que é criado será nomeado MyProject-Bridging-header.h. Basta adicionar instruções de importação para esse arquivo para o Objective-C .h arquivos, como mostrado aqui, e você estará pronto para construir seu projeto mix-and-match.

// Utilize este arquivo para importar cabeçalhos públicos do seu alvo // que você gostaria de expor a Swift. # Import # 147 Bracelet.h # 148- # import # 147 Pendant.h nº 148 de classe DetailViewController: UIViewController {// @ IBOutlet fraca var detailDescriptionLabel: UILabel @IBOutlet var mapView: MKMapView @IBAction func actionButton (sender: AnyObject) {} var detailItem: Event? = Nil {// AnyObject? {DidSet {// Atualizar o view.self.configureView ()}} func configureView () {// Atualiza a interface do usuário para o detalhe item.var pin = MKPointAnnotation () var longa: Duplo = detailItem .longitude como Doublevar lat : Duplo = detailItem .latitude como Doublevar myCoordinate: CLLocationCoordinate2D = CLLocationCoordinate2D (latitude: lat como CLLocationDegrees, longitude: por muito tempo como CLLocationDegrees) pin.coordinate = myCoordinatepin.title = # 147-Test Title # 148 - pin.subtitle = # 147-Test Legenda # 148 - se var myMapView = self.mapView {myMapView.addAnnotation (pin)}} substituição func viewDidLoad () {super.viewDidLoad () // faça qualquer configuração adicional depois de carregar a vista, geralmente a partir de um nib.self.configureView ()} override func didReceiveMemoryWarning () {super.didReceiveMemoryWarning () // Descarte quaisquer recursos que podem ser recriados.}}

menu