2016-11-23 11 views
2

J'utilise le framework GlyuckDataGrid pour implémenter une grille de données en Objective-C. Il existe une extension appelée IndexPath+DataGrid.swift qui est essentielle à l'implémentation de la grille de données, mais elle est écrite dans Swift. J'utilise CocoaPods et j'ai les importations suivantes et je n'arrive toujours pas à y accéder.Comment puis-je accéder à une extension Swift en Objective-C?

@import GlyuckDataGrid; 
#import <GlyuckDataGrid/GlyuckDataGrid-Swift.h> 

E: maintenant que j'ai la réponse à ma solution, je veux souligner que je IndexPath et négligé NSIndexPath. ne soyez pas moi et confondez les 2 ...

+0

votre extension doit être marquée comme publique, et l'extension ne peut pas être définie sur un type ponté - avez-vous vérifié? – Whakkee

+0

@ Whakkee malade fourche et vérifiez-le demain. – Multinerd

Répondre

2

Le framework utilisait un type Swift pur (IndexPath) au lieu de son équivalent Objective-C (NSIndexPath). Dans votre cas, la solution était d'étendre NSIndexPath ainsi que IndexPath pour exposer la fonctionnalité à Objective-C:

public extension NSIndexPath { 
    /** 
    Returns an index-path object initialized with the indexes of a specific row and column in a data grid view. 
    - parameter column: An index number identifying a column in a DataGridView object in a row identified by the row parameter. 
    - parameter row: An index number identifying a row in a DataGridView object. 
    - returns: An NSIndexPath object. 
    */ 
    convenience init(forColumn column: Int, row: Int) { 
     self.init(item: column, section: row) 
    } 

    /// An index number identifying a column in a row of a data grid view. (read-only) 
    var dataGridColumn: Int { 
     return self.index(atPosition: 1) 
    } 

    /// An index number identifying a row in a data grid view. (read-only) 
    var dataGridRow: Int { 
     return self.index(atPosition: 0) 
    } 

    /// An index number for single-item indexPath 
    var index: Int { 
     return self.index(atPosition: 0) 
    } 
} 

De c281729.

+0

merci, l'un des plus hauts supprimé avant que je le puisse. – Multinerd