2016-04-15 12 views
1

ich eine C-Struktur in meinem Swift 2.2 iOS-Projekt aufgenommen haben. Die C-Struktur wird über eine Header-Dateien wie ausgesetzt:C Interoperabilität mit Swift

#define NUM_BINS 10; 
    typedef struct 
    { 
     float bin_size; 
     unsigned short counts[NUM_BINS]; 
     unsigned int cleanSamples; 
     unsigned short compressCount; 
     unsigned short totalSamples; 
     bool isMature; 
    } SD; 

ich dann versuchen, diese Struktur in Swift über zu erklären:

var counts: [UInt16] = [1,2,3,4,5,6,7,8,9,10] 
    let sd = SD(bin_size: 500, counts: counts, cleanSamples: 0, compressCount: 0, totalSamples: 0, isMature: false) 

aber die folgende Fehlermeldung:

Wert kann nicht konvertieren vom Typ '[UInt16]' zum erwarteten Argumenttyp '(UInt16, UInt16, UInt16, UInt16, UInt16, UInt16, UInt16, UInt16, UInt16, UInt16)'

Wie kann ich das von C auf Swift übersetzen?

Danke!

+0

Versuchen Sie, die Klammern um UInt16 loszuwerden –

+0

Was passiert, wenn Sie 'counts: & counts' stattdessen verwenden? – BallpointBen

Antwort

2

Festgröße C Arrays wiederum in Swift Tupeln anstatt Swift-Arrays. (Siehe here für einige unglückliche Folgen.) Also statt

var counts: [UInt16] = [1,2,3,4,5,6,7,8,9,10] 

Sie brauchen so etwas wie

var counts = (1,2,3,4,5,6,7,8,9,10) 

habe ich nichts in Apples offizielle Dokumentation dies zu sagen, übrigens. Ich weiß nicht, ob das Grund zur Sorge, dass es in der Zukunft ändern könnte ...

Verwandte Themen