#available
non sembra funzionare quando si distingue tra watchOS e iOS.Rilevamento dell'API disponibile iOS rispetto a watchOS in Swift
Ecco un esempio di codice condiviso tra iOS & watchos:
lazy var session: WCSession = {
let session = WCSession.defaultSession()
session.delegate = self
return session
}()
...
if #available(iOS 9.0, *) {
guard session.paired else { throw WatchBridgeError.NotPaired } // paired is not available
guard session.watchAppInstalled else { throw WatchBridgeError.NoWatchApp } // watchAppInstalled is not available
}
guard session.reachable else { throw WatchBridgeError.NoConnection }
sembra che solo default watchos e il #available
non è considerato dal compilatore.
Sto utilizzando male questa API o esiste un altro modo per differenziare il codice tra iOS e WatchOS?
Aggiornamento: Sembra che stavo abusando l'API come detto da BPCorp
Utilizzando la soluzione di Tali in codice precedente funziona:
#if os(iOS)
guard session.paired else { throw WatchBridgeError.NotPaired }
guard session.watchAppInstalled else { throw WatchBridgeError.NoWatchApp }
#endif
guard session.reachable else { throw WatchBridgeError.NoConnection }
purtroppo non c'è #if os(watchOS)
.. come di Xcode 7 GM
Modifica: non è sicuro quando è stato aggiunto ma ora è possibile effettuare #if os(watchOS)
su Xcode 7.2
se è un bug puoi aspettare 'stable xcode 7', comunque non sarai in grado di caricare app su App Store da beta xcode. – Aks
@Aks, stavo abusando dell'API non è un bug. Guarda la risposta di BPCorp – Cezar