A collection of practical IOS methods (i)
Last Update:2016-05-12
Source: Internet
Author: User
<span id="Label3"></p><p><p>In code programming, we often use a variety of small methods<br>Here are some of the summaries: (non-timed increments)</p></p>16 Binary Set Color<pre class="prettyprint"><code class=" hljs objectivec">-(instancetype) Colorfromhexstring: (<span class="hljs-built_in"><span class="hljs-built_in">NSString</span></span>*) hexstring Alpha: (<span class="hljs-built_in"><span class="hljs-built_in">CGFloat</span></span>) alpha{<span class="hljs-keyword"><span class="hljs-keyword">unsigned</span></span>Rgbvalue =<span class="hljs-number"><span class="hljs-number">0</span></span>; hexstring = [hexstring stringbyreplacingoccurrencesofstring:@<span class="hljs-string"><span class="hljs-string">"#"</span></span>withstring:@<span class="hljs-string"><span class="hljs-string">""</span></span>]; Nsscanner *scanner = [nsscanner scannerwithstring:hexstring]; [scanner scanhexint:&rgbvalue];<span class="hljs-keyword"><span class="hljs-keyword">return</span></span>[[<span class="hljs-keyword"><span class="hljs-keyword"></span> self</span>class] colorwithr: ((rgbvalue &<span class="hljs-number"><span class="hljs-number">0xFF0000</span></span>) >><span class="hljs-number"><span class="hljs-number"></span> -</span>) G: ((rgbvalue &<span class="hljs-number"><span class="hljs-number">0xff00</span></span>) >><span class="hljs-number"><span class="hljs-number">8</span></span>) B: (rgbvalue &<span class="hljs-number"><span class="hljs-number">0xFF</span></span>) a:alpha];}<span class="hljs-comment"><span class="hljs-comment">//based on the returned 16 binary data directly with "#" assignment (there is no @ "#" will not affect the Value)</span></span>-(instancetype) Colorfromhexstring: (<span class="hljs-built_in"><span class="hljs-built_in">NSString</span></span>*) hexstring{<span class="hljs-keyword"><span class="hljs-keyword">return</span></span>[<span class="hljs-keyword"><span class="hljs-keyword"></span> self</span>Colorfromhexstring:hexstring Alpha:<span class="hljs-number"><span class="hljs-number">1.0</span></span>];}</code></pre>Set the length of text display, the extra part has ... Omitted<pre class="prettyprint"><pre class="prettyprint"><code class="hljs objectivec">-(<span class="hljs-built_in">nsstring </span> *) Stringbytruncatewithlength: (<span class="hljs-built_in">nsinteger </span>) length{<span class="hljs-keyword">if </span> (<span class="hljs-keyword">self </span> <span class="hljs-variable">.length </span> > Length) {<span class="hljs-built_in">nsmutablestring </span> *mstr = [<span class="hljs-built_in">nsmutablestring </span> Stringwithstring:<span class="hljs-keyword">self </span>]; [mstr deletecharactersinrange:nsmakerange (length-<span class="hljs-number">3 </span>, MSTR <span class="hljs-variable">.length </span>-length+<span class="hljs-number">3 </span>)]; <span class="hljs-comment">//setting display text length </span> [mstr appendstring:@<span class="hljs-string" "..." < span>]; <span class="hljs-keyword">return </span> mstr; } <span class="hljs-keyword">else </span> <span class="hljs-keyword">return </span> <span class="hljs-keyword">sel F </span>;} </span></code> </pre></pre>Monitoring of network status<pre class="prettyprint"><code class=" hljs objectivec">-(<span class="hljs-built_in"><span class="hljs-built_in">BOOL</span></span>) networkavailable{<span class="hljs-comment"><span class="hljs-comment">//create 0 address, 0.0.0.0 address indicates the network connection status of the query native</span></span> <span class="hljs-keyword"><span class="hljs-keyword">struct</span></span>Sockaddr_in zeroaddress; Bzero (&zeroaddress,<span class="hljs-keyword"><span class="hljs-keyword">sizeof</span></span>(zeroaddress)); Zeroaddress<span class="hljs-variable"><span class="hljs-variable">. Sin_len</span></span>=<span class="hljs-keyword"><span class="hljs-keyword">sizeof</span></span>(zeroaddress); Zeroaddress<span class="hljs-variable"><span class="hljs-variable">. sin_family</span></span>= af_inet;<span class="hljs-comment"><span class="hljs-comment">//Recover reachability Flags</span></span>Scnetworkreachabilityref defaultroutereachability = scnetworkreachabilitycreatewithaddress (<span class="hljs-literal"><span class="hljs-literal">NULL</span></span>, (<span class="hljs-keyword"><span class="hljs-keyword">struct</span></span>SOCKADDR *) &zeroaddress); Scnetworkreachabilityflags flags;<span class="hljs-comment"><span class="hljs-comment">//get The sign of the connection</span></span> <span class="hljs-built_in"><span class="hljs-built_in">BOOL</span></span>Didretrieveflags = Scnetworkreachabilitygetflags (defaultroutereachability, &flags); Cfrelease (defaultroutereachability);<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(!didretrieveflags) {<span class="hljs-keyword"><span class="hljs-keyword">return</span></span> <span class="hljs-literal"><span class="hljs-literal">NO</span></span>; }<span class="hljs-comment"><span class="hljs-comment">//judging According to the connection mark obtained</span></span> <span class="hljs-comment"><span class="hljs-comment">//scnetworkreachabilityflags: Save the returned test connection status</span></span> <span class="hljs-comment"><span class="hljs-comment">//the commonly used statuses are:</span></span> <span class="hljs-comment"><span class="hljs-comment">//kscnetworkreachabilityflagsreachable: able to connect to network</span></span> <span class="hljs-comment"><span class="hljs-comment">//kscnetworkreachabilityflagsconnectionrequired: able to connect to the network, but first to establish the connection process</span></span> <span class="hljs-comment"><span class="hljs-comment">//kscnetworkreachabilityflagsiswwan: Determine if the connection is covered by a cellular network, such as Edge,gprs or the current 3G. the main difference is the connection via WiFi</span></span> <span class="hljs-built_in"><span class="hljs-built_in">BOOL</span></span>Isreachable = Flags & kscnetworkflagsreachable;<span class="hljs-built_in"><span class="hljs-built_in">BOOL</span></span>Needsconnection = Flags & kscnetworkflagsconnectionrequired;<span class="hljs-keyword"><span class="hljs-keyword">return</span></span>(isreachable &&!needsconnection)?<span class="hljs-literal"><span class="hljs-literal">YES</span></span>:<span class="hljs-literal"><span class="hljs-literal">NO</span></span>;}</code></pre><p><p>#md5 Method Encryption</p></p><pre class="prettyprint"><code class=" hljs applescript">-(nsstring*) md5withstring: (nsstring *) str{const char *cstr = [str utf8string]; unsigned char<span class="hljs-constant"><span class="hljs-constant">result</span></span>[cc_md5_digest_length]; CC_MD5 (cStr, (cc_long) strlen (cStr),<span class="hljs-constant"><span class="hljs-constant">result</span></span>);<span class="hljs-command"><span class="hljs-command">return</span></span>[[nsstring stringwithformat:@<span class="hljs-string"><span class="hljs-string">"xxxxxxxxxxxxxxxx"</span></span>,<span class="hljs-constant"><span class="hljs-constant">result</span></span>[<span class="hljs-number"><span class="hljs-number">0</span></span>],<span class="hljs-constant"><span class="hljs-constant">result</span></span>[<span class="hljs-number"><span class="hljs-number">1</span></span>],<span class="hljs-constant"><span class="hljs-constant">result</span></span>[<span class="hljs-number"><span class="hljs-number">2</span></span>],<span class="hljs-constant"><span class="hljs-constant">result</span></span>[<span class="hljs-number"><span class="hljs-number">3</span></span>],<span class="hljs-constant"><span class="hljs-constant">result</span></span>[<span class="hljs-number"><span class="hljs-number">4</span></span>],<span class="hljs-constant"><span class="hljs-constant">result</span></span>[<span class="hljs-number"><span class="hljs-number">5</span></span>],<span class="hljs-constant"><span class="hljs-constant">result</span></span>[<span class="hljs-number"><span class="hljs-number">6</span></span>],<span class="hljs-constant"><span class="hljs-constant">result</span></span>[<span class="hljs-number"><span class="hljs-number">7</span></span>],<span class="hljs-constant"><span class="hljs-constant">result</span></span>[<span class="hljs-number"><span class="hljs-number">8</span></span>],<span class="hljs-constant"><span class="hljs-constant">result</span></span>[<span class="hljs-number"><span class="hljs-number">9</span></span>],<span class="hljs-constant"><span class="hljs-constant">result</span></span>[<span class="hljs-number"><span class="hljs-number">Ten</span></span>],<span class="hljs-constant"><span class="hljs-constant">result</span></span>[<span class="hljs-number"><span class="hljs-number"></span> one</span>],<span class="hljs-constant"><span class="hljs-constant">result</span></span>[<span class="hljs-number"><span class="hljs-number"></span> a</span>],<span class="hljs-constant"><span class="hljs-constant">result</span></span>[<span class="hljs-number"><span class="hljs-number"></span> -</span>],<span class="hljs-constant"><span class="hljs-constant">result</span></span>[<span class="hljs-number"><span class="hljs-number"></span> -</span>],<span class="hljs-constant"><span class="hljs-constant">result</span></span>[<span class="hljs-number"><span class="hljs-number"></span> the</span>]] [lowercasestring];}</code></pre>Get the native IP address<pre class="prettyprint"><code class=" hljs objectivec">-(<span class="hljs-built_in"><span class="hljs-built_in">NSString</span></span>*) localip{<span class="hljs-built_in"><span class="hljs-built_in">NSString</span></span>*address = @<span class="hljs-string"><span class="hljs-string">"error"</span></span>;<span class="hljs-keyword"><span class="hljs-keyword">struct</span></span>Ifaddrs *interfaces =<span class="hljs-literal"><span class="hljs-literal">NULL</span></span>;<span class="hljs-keyword"><span class="hljs-keyword">struct</span></span>Ifaddrs *temp_addr =<span class="hljs-literal"><span class="hljs-literal">NULL</span></span>;<span class="hljs-keyword"><span class="hljs-keyword">int</span></span>Success =<span class="hljs-number"><span class="hljs-number">0</span></span>;<span class="hljs-comment"><span class="hljs-comment">//retrieve The current interfaces-returns 0 on success</span></span>Success = Getifaddrs (&interfaces);<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(success = =<span class="hljs-number"><span class="hljs-number">0</span></span>) {<span class="hljs-comment"><span class="hljs-comment">//Loop through linked list of interfaces</span></span>TEMP_ADDR = interfaces;<span class="hljs-keyword"><span class="hljs-keyword"></span> while</span>(temp_addr! =<span class="hljs-literal"><span class="hljs-literal">NULL</span></span>) {<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(temp_addr->ifa_addr->sa_family = = Af_inet) {<span class="hljs-comment"><span class="hljs-comment">//Check If interface is En0 which are the WiFi connection</span> on the IPhone</span> <span class="hljs-keyword"><span class="hljs-keyword">if</span></span>([[<span class="hljs-built_in"><span class="hljs-built_in">NSString</span></span>stringwithutf8string:temp_addr->ifa_name] isequaltostring:@<span class="hljs-string"><span class="hljs-string">"en0"</span></span>]) {<span class="hljs-comment"><span class="hljs-comment">//Get nsstring from C String</span></span>address = [<span class="hljs-built_in"><span class="hljs-built_in">NSString</span></span>Stringwithutf8string:inet_ntoa ((<span class="hljs-keyword"><span class="hljs-keyword">struct</span></span>Sockaddr_in *) (temp_addr->ifa_addr)->sin_addr)]; }} temp_addr = temp_addr->ifa_next; } }<span class="hljs-comment"><span class="hljs-comment">//free Memory</span></span>Freeifaddrs (interfaces);<span class="hljs-keyword"><span class="hljs-keyword">return</span></span>address;}</code></pre>Check mobile number verification in several string formats<pre class="prettyprint"><code class=" hljs objectivec">-(<span class="hljs-built_in"><span class="hljs-built_in">BOOL</span></span>) Validatephonenumber: (<span class="hljs-built_in"><span class="hljs-built_in">NSString</span></span>*) phonenumber{<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(phonenumber<span class="hljs-variable"><span class="hljs-variable">. Length</span></span>==<span class="hljs-number"><span class="hljs-number">0</span></span>|| PhoneNumber<span class="hljs-variable"><span class="hljs-variable">. Length</span></span>!=<span class="hljs-number"><span class="hljs-number"></span> one</span>)<span class="hljs-keyword"><span class="hljs-keyword">return</span></span> <span class="hljs-literal"><span class="hljs-literal">NO</span></span>;<span class="hljs-built_in"><span class="hljs-built_in">NSString</span></span>*regex = @<span class="hljs-string"><span class="hljs-string">"^ ((13[0-9)) | ( 147) | (145) | (15[0-9]) | (17[0-9]) | (18[0-9])) \\d{8}$ "</span></span>; Nspredicate *pred = [nspredicate predicatewithformat:@<span class="hljs-string"><span class="hljs-string">"self MATCHES%@"</span></span>, regex];<span class="hljs-built_in"><span class="hljs-built_in">BOOL</span></span>IsMatch = [pred evaluatewithobject:phonenumber];<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(!ismatch) {<span class="hljs-keyword"><span class="hljs-keyword">return</span></span> <span class="hljs-literal"><span class="hljs-literal">NO</span></span>; }<span class="hljs-keyword"><span class="hljs-keyword">return</span></span> <span class="hljs-literal"><span class="hljs-literal">YES</span></span>;}</code></pre>English character and digital mixed check (commonly used for password Checking)<pre class="prettyprint"><code class=" hljs objectivec">-(<span class="hljs-built_in"><span class="hljs-built_in">BOOL</span></span>) Validatepassword: (<span class="hljs-built_in"><span class="hljs-built_in">NSString</span></span>*) password{<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(password<span class="hljs-variable"><span class="hljs-variable">. Length</span></span><<span class="hljs-number"><span class="hljs-number">8</span></span>><span class="hljs-number"><span class="hljs-number"></span> -</span>) {<span class="hljs-keyword"><span class="hljs-keyword">return</span></span> <span class="hljs-literal"><span class="hljs-literal">NO</span></span>; }<span class="hljs-built_in"><span class="hljs-built_in">BOOL</span></span>Numberresult =<span class="hljs-literal"><span class="hljs-literal">NO</span></span>;<span class="hljs-built_in"><span class="hljs-built_in">BOOL</span></span>Letterresult =<span class="hljs-literal"><span class="hljs-literal">NO</span></span>;<span class="hljs-keyword"><span class="hljs-keyword"></span> for</span>(<span class="hljs-keyword"><span class="hljs-keyword">int</span></span>i =<span class="hljs-number"><span class="hljs-number">0</span></span>; I<password xss=removed>=<span class="hljs-number"><span class="hljs-number"></span> -</span>&& character <=<span class="hljs-number"><span class="hljs-number"></span> $</span>) && Numberresult = =<span class="hljs-literal"><span class="hljs-literal">NO</span></span>) {numberresult =<span class="hljs-literal"><span class="hljs-literal">YES</span></span>; }<span class="hljs-comment"><span class="hljs-comment">//a~z a~z</span></span> <span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(((character >=<span class="hljs-number"><span class="hljs-number"></span> $</span>&& character <=<span class="hljs-number"><span class="hljs-number"></span> -</span>) || (character >=<span class="hljs-number"><span class="hljs-number"></span> the</span>&& character <=<span class="hljs-number"><span class="hljs-number">122</span></span>)) && Letterresult = =<span class="hljs-literal"><span class="hljs-literal">NO</span></span>) {letterresult =<span class="hljs-literal"><span class="hljs-literal">YES</span></span>; }<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(numberresult = =<span class="hljs-literal"><span class="hljs-literal">YES</span></span>&& Letterresult = =<span class="hljs-literal"><span class="hljs-literal">YES</span></span>) {<span class="hljs-keyword"><span class="hljs-keyword">return</span></span> <span class="hljs-literal"><span class="hljs-literal">YES</span></span>; } }<span class="hljs-keyword"><span class="hljs-keyword">return</span></span> <span class="hljs-literal"><span class="hljs-literal">NO</span></span>;}</code></pre>Mailbox Check<pre class="prettyprint"><pre class="prettyprint"><code class=" hljs objectivec">+(<span class="hljs-built_in">BOOL</span>)validateEmailAddress:(<span class="hljs-built_in">NSString</span>*)emailAddress{ <span class="hljs-built_in">NSString</span> *emailRegex = @<span class="hljs-string">"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"</span>; NSPredicate *emailTest = [NSPredicate predicateWithFormat:@<span class="hljs-string">"SELF MATCHES%@"</span>,emailRegex]; <span class="hljs-keyword">return</span> [emailTest evaluateWithObject:emailAddress];}</code></pre></pre>Post upload Multiple files<p><p>Post upload data</p></p><pre class="prettyprint"><code class=" hljs objectivec">-(<span class="hljs-keyword"><span class="hljs-keyword">void</span></span>) Sendpostrequestwithfiletourl: (<span class="hljs-built_in"><span class="hljs-built_in">NSString</span></span>*) Apiname Parameters: (<span class="hljs-built_in"><span class="hljs-built_in">nsdictionary</span></span>*) params filepathname: (<span class="hljs-built_in"><span class="hljs-built_in">Nsarray</span></span>*) Filepathname Paramtername: (<span class="hljs-built_in"><span class="hljs-built_in">Nsarray</span></span>*) names MimeType: (<span class="hljs-built_in"><span class="hljs-built_in">Nsarray</span></span>*) MimeType {afhttprequestoperationmanager * manager = [afhttprequestoperationmanager manager]; Manager<span class="hljs-variable"><span class="hljs-variable">. Requestserializer</span></span><span class="hljs-variable"><span class="hljs-variable">. timeOutInterval</span></span>=<span class="hljs-number"><span class="hljs-number">.</span></span>F<span class="hljs-built_in"><span class="hljs-built_in">NSString</span></span>*apiurl = [<span class="hljs-keyword"><span class="hljs-keyword"></span> self</span>urlstringwithapi:apiname];<span class="hljs-built_in"><span class="hljs-built_in">nsdictionary</span></span>*finalparams = [<span class="hljs-keyword"><span class="hljs-keyword"></span> self</span>dictionarybyaddingcommonparameters:params]; Afhttprequestoperation *operation = [manager post:apiurl parameters:finalparams constructingbodywithblock:^ (<span class="hljs-keyword"><span class="hljs-keyword">ID</span></span><AFMultipartFormData> FormData) {<span class="hljs-keyword"><span class="hljs-keyword"></span> for</span>(<span class="hljs-keyword"><span class="hljs-keyword">int</span></span>i =<span class="hljs-number"><span class="hljs-number">0</span></span>; i<filepathname<span class="hljs-variable"><span class="hljs-variable">. Count</span></span>; I++) {nsdata *data = [nsdata datawithcontentsoffile:filepathname[i]]; [formData appendpartwithfiledata:data name:names[i] filename:[filepathname[i] lastpathcomponent] mimeType:mimeType[ i]]; }} success:^ (afhttprequestoperation * operation,<span class="hljs-keyword"><span class="hljs-keyword">ID</span></span>Responseobject) {failure:^ (afhttprequestoperation * operatioon,<span class="hljs-built_in"><span class="hljs-built_in">Nserror</span></span>* Error) {}</code></pre>Dictionary conversion to JSON binary data stream<pre class="prettyprint"><pre class="prettyprint"><code class=" hljs lua"><span class="hljs-built_in">error</span>:<span class="hljs-keyword">nil</span>];</code></pre></pre>"not to be continued"<p><p>A collection of practical IOS methods (i)</p></p></span>