Swift 2.2でSimulator上で動作しているかを判定する方法
Xcode 7+Swift 2.2でiOSアプリを開発中だが、カメラ機能などはSimulator上では動作しない機能がある。 そのために、プログラム上(Swiftコード中)でシミュレータで動作中かを判別して処理を分けたいところだが、こういう感じにするのが良いらしい。
<div class="code-title">Swift</div>
#if (arch(i386) || arch(x86_64)) && os(iOS)
// simulator で動作している。
#endif
下記の表によると、他にもOSの種類(OS XやiOS,watchOS)やSwiftバージョンで、処理を分けることが可能のようだ。
NOTE
Function <th class="TableHeading_TableRow_TableCell"> Valid arguments </th>
os()
<td> <code>OSX</code>, <code>iOS</code>, <code>watchOS</code>, <code>tvOS</code>, <code>Linux</code> </td>
arch()
<td> <code>i386</code>, <code>x86_64</code>, <code>arm</code>, <code>arm64</code> </td>
swift()
<td> <code>>=</code> followed by a version number </td>
The arch(arm) platform testing function does not return true for ARM 64 devices. The arch(i386) platform testing function returns true when code is compiled for the 32–bit iOS simulator.