как преобразовать nsinteger в int?

<p>например, при передаче сообщения <code>value</code> экземпляру <code>nsinteger</code>, например, так</p><p><code>[a value]</code> вызывает exc\_bad\_access.</p><p>так как же преобразовать <code>nsinteger</code> в <code>int</code>?</p><p>если это актуально, используются только маленькие цифры <32.</p>

<p>та да:</p><pre><code>nsinteger myinteger = 42; int myint = (int) myinteger; </code></pre><p><code>nsinteger</code> - это не более чем 32/64 битное int. (он будет использовать соответствующий размер в зависимости от используемой ос/платформы)</p>

<p>если вы хотите сделать это встроенным, просто приведите <code>nsuinteger</code> или <code>nsinteger</code> к <code>int</code>:</p><pre><code>int i = -1; nsuinteger row = 100; i > row // true, since the signed int is implicitly converted to an unsigned int i > (int)row // false </code></pre>

<p>я не уверен в обстоятельствах, когда вам нужно преобразовать <code>nsinteger</code> в <code>int</code>.</p><p>nsinteger это просто определение типа:</p><p>nsinteger используется для описания целого числа независимо от того, собираете ли вы 32-битную или 64-битную систему.</p><pre><code>#if \_\_lp64\_\_ || target\_os\_embedded || target\_os\_iphone || target\_os\_win32 || ns\_build\_32\_like\_64 typedef long nsinteger; #else typedef int nsinteger; #endif </code></pre><p>вы можете использовать <code>nsinteger</code> в любом месте, где вы используете <code>int</code>, не конвертируя его.</p>

<p>обычно используемый в uisegmentedcontrol, «ошибка» появляется при компиляции в 64-битных, а не в 32-битных системах, простой способ не передавать ее в новую переменную - использовать следующие советы, добавив<strong> (int) </strong>: </p><pre><code>[\_monchiffre setunite:(int)[\_valunites selectedsegmentindex]]; </code></pre><p>вместо :</p><pre><code>[\_monchiffre setunite:[\_valunites selectedsegmentindex]]; </code></pre>