2015-07-30 4 views
0

Я пытаюсь использовать класс Swift в Objective C, а класс Objective C «GameScene» получает вызовы делегатов из класса Quick. Но внутри быстрого класса я получаю ошибку «не может ссылаться на drawTopEdge со списком аргументов типа '(INT, COL: межд)'Swift и Object C Вызов делегата - проблема с типом данных

//above in the code 
    var maze:[[Int]]! 
//////////////// 
    func display() { //this is in the swift class 
     for i in 0..<y { 
      // Draw top edge 
      for j in 0..<x { 
       print((maze[j][i] & 1) == 0 ? "+---" : "+ ") 
       if ((maze[j][i] & 1) == 0) { 
        delegate!.drawTopEdge(j, col: i) //Error see picture attached and above 
       } 
      } 


    //This is in the GameScene class 
    -(void)drawTopEdge:(NSUInteger)r col:(int)c; 
    -(void)drawLeftEdge:(NSUInteger)r col:(int)c; 
    -(void)drawBottomEdge:(NSUInteger)r col:(int)c; 

http://i.stack.imgur.com/dVLEe.png

enter image description here

+0

вы приложите фотографию? –

+0

Да, я приложил его. – cocos2dbeginner

+1

int отличается от nsuinteger. Вы пытались сделать все int? –

ответ

0
-(void)drawTopEdge:(NSUInteger)r col:(int)c; 

NSUInteger становится Int в Swift. Однако int становится CInt. В идеале вы должны изменить свои подписи, чтобы использовать целые числа NS*, чтобы Swift мог легко соединить их. Но в противном случае, вы можете бросить в точке вызова:

delegate!.drawTopEdge(j, col: CInt(i)) 

См Dealing with C APIs и Foundation Data Types для более.

+0

Я изменил все на NSUInteger, но все равно получаю ошибки компиляции. – cocos2dbeginner

+0

Ах, понял. Пришлось использовать NSInteger. – cocos2dbeginner

Смежные вопросы