2017-03-16 4 views
0

J'utilise ReachabilitySwift cocoapods dans le projet.ReachabilitySwift pod provoque une erreur dans Swift 2.3

fichier Pod:

pod 'ReachabilitySwift', '~> 2.4' 

J'ai installé ce pod et importé fichier ReachabilitySwift.

Maintenant, lors de la création d'une instance let reachability = Reachability()! résultats dans l'erreur ne peut être invoqué pour initialiseur type « joignabilité » sans argument.

Screenshot

J'ai essayé solution mais n'a pas travaillé.

Une solution?

+0

Pouvez-vous montrer comment vous appliquez ReachabilitySwift dans le fichier pod. Avez-vous limité sa version? – Sergey

+0

@Sergey: Vérifiez la question mise à jour –

+0

S'il vous plaît regarder sur ma réponse, j'ai déjà trouvé la réponse à ma question. – Sergey

Répondre

0

Vous avez trouvé la solution!

exemple joignabilité à créer comme suit pour Swift 2,3

let reachability = try! Reachability.init(hostname: "www.google.com") 
1

Le message d'erreur est assez claire:

Vous devez utiliser l'un des initialiseurs prenant un argument.

type let reachability = Reach et comprendre ce qui suggère Xcode dans la complétion de code
(ou lisez la documentation).

1

Le problème est que vous utilisez rapide 2.3, pour cette version, vous devez utiliser ReachabilitySwift avec la version 2.4 . Mais dans cette version Reachability classe n'ont pas de constructeur sans paramètres. Pour résoudre ce problème, vous devez créer une extension pour cette classe et ajouter un constructeur sans paramètres.

extansion Reachability{ 
    public convenience init() { 

     var zeroAddress = sockaddr() 
     zeroAddress.sa_len = UInt8(MemoryLayout<sockaddr>.size) 
     zeroAddress.sa_family = sa_family_t(AF_INET) 

     guard let ref: SCNetworkReachability = withUnsafePointer(to: &zeroAddress, { 
      SCNetworkReachabilityCreateWithAddress(nil, UnsafePointer($0)) 
     }) else { return nil } 

     self.init(reachabilityRef: ref) 
    } 
} 

Je n'ai pas testé ce code. C'est le code peut contenir quelques erreurs.