Bridging entre objective-c e rápida
Video: Bridging Objective C code with Swift
Conteúdo
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 dos quadros, os engenheiros da Apple estão trabalhando através das 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 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 para 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 de d -
Este código permite-lhe adicionar ou remover objetos 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.
Video: Learning Swift Attempt #4 - Operator Overloading & Objective-C Bridging
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úblicas // do seu alvo que você gostaria de expor a Swift # import classe “Bracelet.h” #import “Pendant.h” DetailViewController:. UIViewController {// @ IBOutlet fraco var detailDescriptionLabel: UILabel ! @IBOutlet var mapView: MKMapView @IBAction func actionButton (sender: AnyObject) {} var detailItem: Event? = Nil {// AnyObject? {DidSet {// Atualize 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: longa como CLLocationDegrees) pin.coordinate = myCoordinatepin.title = “Test Título” -pin.subtitle = “Test Legenda”, se var myMapView = self.mapView {myMapView.addAnnotation (pinos)}} substituição func viewDidLoad () {super.viewDidLoad () // faz qualquer configuração adicional após o carregamento da vista, tipicamente a partir de um nib.self.configureView ()} func substituição didReceiveMemoryWarning () {super.didReceiveMemoryWarning () // Descarte quaisquer recursos que podem ser recriados.}}