failable/docs/Protocols/Validation.html

508 lines
29 KiB
HTML
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en">
<head>
<title>Validation Protocol Reference</title>
<link rel="stylesheet" type="text/css" href="../css/jazzy.css" />
<link rel="stylesheet" type="text/css" href="../css/highlight.css" />
<meta charset='utf-8'>
<script src="../js/jquery.min.js" defer></script>
<script src="../js/jazzy.js" defer></script>
</head>
<body>
<a name="//apple_ref/swift/Protocol/Validation" class="dashAnchor"></a>
<a title="Validation Protocol Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="../index.html"> Docs</a> (98% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="../index.html"> Reference</a>
<img id="carat" src="../img/carat.png" />
Validation Protocol Reference
</p>
</div>
<div class="content-wrapper">
<nav class="sidebar">
<ul class="nav-groups">
<li class="nav-group-name">
<a href="../Extensions.html">Extensions</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="../Extensions/CustomStringConvertible.html">CustomStringConvertible</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a href="../Functions.html">Functions</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation2neoiySbAA8FailableVyxq_G_ADyxq0_GtSQRz9SupportedQy_RszA2AR_A2AR0_AGQy0_AHRSr1_lF">!=(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation2neoiySbAA8FailableVyxq_G_ADyxq0_GtSzRz9SupportedQy_RszA2AR_A2AR0_AGQy0_AHRSr1_lF">!=(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation1roiyAA8FailableVyxAA19AppendedValidationsVyxq_q0_GGADyxq_G_ADyxq0_GtKSzRz9SupportedQy_RszA2AR_A2AR0_AKQy0_ALRSr1_lF">%(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation1aoiyAA8FailableVyxAA19AppendedValidationsVyxq_q0_GGADyxq_G_ADyxq0_GtKSzRz9SupportedQy_RszA2AR_A2AR0_AKQy0_ALRSr1_lF">&amp;(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation2amoiyAA8FailableVyxAA19AppendedValidationsVyxq_q0_GGADyxq_G_ADyxq0_GtKs17FixedWidthIntegerRz9SupportedQy_RszA2AR_A2AR0_ALQy0_AMRSr1_lF">&amp;*(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation2apoiyAA8FailableVyxAA19AppendedValidationsVyxq_q0_GGADyxq_G_ADyxq0_GtKs17FixedWidthIntegerRz9SupportedQy_RszA2AR_A2AR0_ALQy0_AMRSr1_lF">&amp;+(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation2asoiyAA8FailableVyxAA19AppendedValidationsVyxq_q0_GGADyxq_G_ADyxq0_GtKs17FixedWidthIntegerRz9SupportedQy_RszA2AR_A2AR0_ALQy0_AMRSr1_lF">&amp;-(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation3alloiyAA8FailableVyxAA19AppendedValidationsVyxq_q0_GGADyxq_G_ADyxq0_GtKs17FixedWidthIntegerRz9SupportedQy_RszA2AR_A2AR0_ALQy0_AMRSr1_lF">&amp;&lt;&lt;(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation3aggoiyAA8FailableVyxAA19AppendedValidationsVyxq_q0_GGADyxq_G_ADyxq0_GtKs17FixedWidthIntegerRz9SupportedQy_RszA2AR_A2AR0_ALQy0_AMRSr1_lF">&amp;&gt;&gt;(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation1moiyAA8FailableVyxAA19AppendedValidationsVyxq_q0_GGADyxq_G_ADyxq0_GtKSFRz9SupportedQy_RszA2AR_A2AR0_AKQy0_ALRSr1_lF">*(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation1moiyAA8FailableVyxAA19AppendedValidationsVyxq_q0_GGADyxq_G_ADyxq0_GtKSjRz9SupportedQy_RszA2AR_A2AR0_AKQy0_ALRSr1_lF">*(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation1moiyAA8FailableVyxAA19AppendedValidationsVyxq_q0_GGADyxq_G_ADyxq0_GtKSzRz9SupportedQy_RszA2AR_A2AR0_AKQy0_ALRSr1_lF">*(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation1moiyAA8FailableVyxq_GAE_xtKSjRz9SupportedQy_RszA2AR_r0_lF">*(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation2meoiyyAA8FailableVyxq_Gz_ADyxq0_GtKSjRz9SupportedQy_RszA2AR_A2AR0_AGQy0_AHRSr1_lF">*=(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation2meoiyyAA8FailableVyxq_Gz_xtKSjRz9SupportedQy_RszA2AR_r0_lF">*=(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation1poiyAA8FailableVyxAA19AppendedValidationsVyxq_q0_GGADyxq_G_ADyxq0_GtKSFRz9SupportedQy_RszA2AR_A2AR0_AKQy0_ALRSr1_lF">+(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation1poiyAA8FailableVyxAA19AppendedValidationsVyxq_q0_GGADyxq_G_ADyxq0_GtKSjRz9SupportedQy_RszA2AR_A2AR0_AKQy0_ALRSr1_lF">+(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation1poiyAA8FailableVyxAA19AppendedValidationsVyxq_q0_GGADyxq_G_ADyxq0_GtKSzRz9SupportedQy_RszA2AR_A2AR0_AKQy0_ALRSr1_lF">+(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation1poiyAA8FailableVyxq_GAE_xtKSjRz9SupportedQy_RszA2AR_r0_lF">+(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation2peoiyyAA8FailableVyxq_Gz_ADyxq0_GtKSjRz9SupportedQy_RszA2AR_A2AR0_AGQy0_AHRSr1_lF">+=(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation2peoiyyAA8FailableVyxq_Gz_xtKSjRz9SupportedQy_RszA2AR_r0_lF">+=(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation1soiyAA8FailableVyxAA19AppendedValidationsVyxq_q0_GGADyxq_G_ADyxq0_GtKSFRz9SupportedQy_RszA2AR_A2AR0_AKQy0_ALRSr1_lF">-(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation1soiyAA8FailableVyxAA19AppendedValidationsVyxq_q0_GGADyxq_G_ADyxq0_GtKSjRz9SupportedQy_RszA2AR_A2AR0_AKQy0_ALRSr1_lF">-(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation1soiyAA8FailableVyxAA19AppendedValidationsVyxq_q0_GGADyxq_G_ADyxq0_GtKSzRz9SupportedQy_RszA2AR_A2AR0_AKQy0_ALRSr1_lF">-(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation1soiyAA8FailableVyxq_GAE_xtKSjRz9SupportedQy_RszA2AR_r0_lF">-(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation2seoiyyAA8FailableVyxq_Gz_ADyxq0_GtKSjRz9SupportedQy_RszA2AR_A2AR0_AGQy0_AHRSr1_lF">-=(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation2seoiyyAA8FailableVyxq_Gz_xtKSjRz9SupportedQy_RszA2AR_r0_lF">-=(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/...(_:_:)">...(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation3zzloiyAA8FailableVySnyxGAA07ElementA0VyAeA19AppendedValidationsVyxq_q0_GGGADyxq_G_ADyxq0_GtKSxRz9SupportedQy_RszA2AR_A2AR0_SZ6StrideRpzAOQy0_APRSr1_lF">..&lt;(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation1doiyAA8FailableVyxAA19AppendedValidationsVyxq_q0_GGADyxq_G_ADyxq0_GtKSFRz9SupportedQy_RszA2AR_A2AR0_AKQy0_ALRSr1_lF">/(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation1doiyAA8FailableVyxAA19AppendedValidationsVyxq_q0_GGADyxq_G_ADyxq0_GtKSzRz9SupportedQy_RszA2AR_A2AR0_AKQy0_ALRSr1_lF">/(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation1loiySbAA8FailableVyxq_G_ADyxq0_GtSFRz9SupportedQy_RszA2AR_A2AR0_AGQy0_AHRSr1_lF">&lt;(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation1loiySbAA8FailableVyxq_G_ADyxq0_GtSLRz9SupportedQy_RszA2AR_A2AR0_AGQy0_AHRSr1_lF">&lt;(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation2leoiySbAA8FailableVyxq_G_ADyxq0_GtSFRz9SupportedQy_RszA2AR_A2AR0_AGQy0_AHRSr1_lF">&lt;=(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation2leoiySbAA8FailableVyxq_G_ADyxq0_GtSLRz9SupportedQy_RszA2AR_A2AR0_AGQy0_AHRSr1_lF">&lt;=(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation2leoiySbAA8FailableVyxq_G_ADyxq0_GtSzRz9SupportedQy_RszA2AR_A2AR0_AGQy0_AHRSr1_lF">&lt;=(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation2ltoiyyAA8FailableVyxq_Gz_xtK9SupportedQy_RszA2AR_r0_lF">&lt;~(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation2eeoiySbAA8FailableVyxq_G_ADyxq0_GtSFRz9SupportedQy_RszA2AR_A2AR0_AGQy0_AHRSr1_lF">==(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation2eeoiySbAA8FailableVyxq_G_ADyxq0_GtSQRz9SupportedQy_RszA2AR_A2AR0_AGQy0_AHRSr1_lF">==(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation1goiySbAA8FailableVyxq_G_ADyxq0_GtSFRz9SupportedQy_RszA2AR_A2AR0_AGQy0_AHRSr1_lF">&gt;(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation1goiySbAA8FailableVyxq_G_ADyxq0_GtSLRz9SupportedQy_RszA2AR_A2AR0_AGQy0_AHRSr1_lF">&gt;(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation1goiySbAA8FailableVyxq_G_ADyxq0_GtSzRz9SupportedQy_RszA2AR_A2AR0_AGQy0_AHRSr1_lF">&gt;(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation2geoiySbAA8FailableVyxq_G_ADyxq0_GtSFRz9SupportedQy_RszA2AR_A2AR0_AGQy0_AHRSr1_lF">&gt;=(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation2geoiySbAA8FailableVyxq_G_ADyxq0_GtSLRz9SupportedQy_RszA2AR_A2AR0_AGQy0_AHRSr1_lF">&gt;=(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation2geoiySbAA8FailableVyxq_G_ADyxq0_GtSzRz9SupportedQy_RszA2AR_A2AR0_AGQy0_AHRSr1_lF">&gt;=(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation2qqoiyxAA8FailableVyxSgq_G_xyKXKtKA2AR_AE9SupportedRt_r0_lF">??(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation2qqoiyxSgAA8FailableVyACq_G_ACyKXKtKA2AR_AC9SupportedRt_r0_lF">??(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation1xoiyAA8FailableVyxAA19AppendedValidationsVyxq_q0_GGADyxq_G_ADyxq0_GtKSzRz9SupportedQy_RszA2AR_A2AR0_AKQy0_ALRSr1_lF">^(_:_:)</a>
</li>
<li class="nav-group-task">
<a href="../Functions.html#/s:10Validation1ooiyAA8FailableVyxAA19AppendedValidationsVyxq_q0_GGADyxq_G_ADyxq0_GtKSzRz9SupportedQy_RszA2AR_A2AR0_AKQy0_ALRSr1_lF">|(_:_:)</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a href="../Protocols.html">Protocols</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="../Protocols/AnyValidation.html">AnyValidation</a>
</li>
<li class="nav-group-task">
<a href="../Protocols/InRangeValidation.html">InRangeValidation</a>
</li>
<li class="nav-group-task">
<a href="../Protocols/LengthValidation.html">LengthValidation</a>
</li>
<li class="nav-group-task">
<a href="../Protocols/RegexValidation.html">RegexValidation</a>
</li>
<li class="nav-group-task">
<a href="../Protocols/Validation.html">Validation</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a href="../Structs.html">Structures</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="../Structs/AppendedValidations.html">AppendedValidations</a>
</li>
<li class="nav-group-task">
<a href="../Structs/ElementValidation.html">ElementValidation</a>
</li>
<li class="nav-group-task">
<a href="../Structs/Failable.html">Failable</a>
</li>
<li class="nav-group-task">
<a href="../Structs/NotNil.html">NotNil</a>
</li>
<li class="nav-group-task">
<a href="../Structs/NotNilValidate.html">NotNilValidate</a>
</li>
<li class="nav-group-task">
<a href="../Structs/ValidationError.html">ValidationError</a>
</li>
</ul>
</li>
</ul>
</nav>
<article class="main-content">
<section>
<section class="section">
<h1>Validation</h1>
<div class="declaration">
<div class="language">
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">Validation</span><span class="p">:</span> <span class="kt"><a href="../Protocols/AnyValidation.html">AnyValidation</a></span></code></pre>
</div>
</div>
<p>A type that can be used to validate a new value for a <code><a href="../Structs/Failable.html">Failable</a></code> type.</p>
<p>A <code>Validation</code> type can only be used for a <code><a href="../Structs/Failable.html">Failable</a></code> type if <code>Failable.T</code> and <code>Validation.Suuported</code> types are the same.</p>
<p>An example <code>Validation</code> implementation might look like this:</p>
<pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">Length1028</span><span class="o">&lt;</span><span class="kt">C</span><span class="o">&gt;</span><span class="p">:</span> <span class="kt">Validation</span> <span class="k">where</span> <span class="kt">C</span><span class="p">:</span> <span class="kt">Collection</span> <span class="p">{</span>
<span class="kd">static</span> <span class="kd">func</span> <span class="nf">validate</span><span class="p">(</span><span class="n">_</span> <span class="nv">value</span><span class="p">:</span> <span class="kt">C</span><span class="p">)</span><span class="k">throws</span> <span class="p">{</span>
<span class="k">guard</span> <span class="n">value</span><span class="o">.</span><span class="n">count</span> <span class="o">&lt;=</span> <span class="mi">1028</span> <span class="k">else</span> <span class="p">{</span> <span class="k">throw</span> <span class="kt">Error</span><span class="o">.</span><span class="n">toLong</span> <span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
</code></pre>
<p>Both the <code>subvalidations</code> property and the <code>validate</code> method have default implementations,
so neither need to be implemented to conform to <code>Validation</code>.</p>
</section>
<section class="section task-group-section">
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:10ValidationAAP9SupportedQa"></a>
<a name="//apple_ref/swift/Alias/Supported" class="dashAnchor"></a>
<a class="token" href="#/s:10ValidationAAP9SupportedQa">Supported</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The type that this validation can validate.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">associatedtype</span> <span class="kt">Supported</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:10ValidationAAP8validateyy9SupportedQzKFZ"></a>
<a name="//apple_ref/swift/Method/validate(_:)" class="dashAnchor"></a>
<a class="token" href="#/s:10ValidationAAP8validateyy9SupportedQzKFZ">validate(_:)</a>
</code>
<span class="declaration-note">
Default implementation
</span>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>A type-safe method for validating a new value for a <code><a href="../Structs/Failable.html">Failable</a></code> instance.</p>
</div>
<h4>Default Implementation</h4>
<div class="default_impl abstract">
<p>The default implementation of the <code>Validation.validate</code> method. Does nothing.
You should keepo the default implementation if the validation is just a collection of other validations to run.</p>
<p>The default implementation for the type-erased <code>validate</code> method. This implementation takes the value and trys to cast it
to the associated <code>Support</code> type. If casting fails, <code>ValidationError.invalidType</code> is thrown.
Otherwise, the type-safe <code>validate</code> method is called.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="nf">validate</span><span class="p">(</span><span class="n">_</span> <span class="nv">value</span><span class="p">:</span> <span class="kt"><a href="../Protocols/Validation.html#/s:10ValidationAAP9SupportedQa">Supported</a></span><span class="p">)</span><span class="k">throws</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>value</em>
</code>
</td>
<td>
<div>
<p>The new value to validate.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:10Validation03AnyA0P4typeypXpvpZ"></a>
<a name="//apple_ref/swift/Variable/type" class="dashAnchor"></a>
<a class="token" href="#/s:10Validation03AnyA0P4typeypXpvpZ">type</a>
</code>
<span class="declaration-note">
Extension method
</span>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">static</span> <span class="k">var</span> <span class="nv">type</span><span class="p">:</span> <span class="kt">Any</span><span class="o">.</span><span class="k">Type</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:10Validation03AnyA0P14subvalidationsSayAaB_pXpGvpZ"></a>
<a name="//apple_ref/swift/Variable/subvalidations" class="dashAnchor"></a>
<a class="token" href="#/s:10Validation03AnyA0P14subvalidationsSayAaB_pXpGvpZ">subvalidations</a>
</code>
<span class="declaration-note">
Extension method
</span>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">static</span> <span class="k">var</span> <span class="nv">subvalidations</span><span class="p">:</span> <span class="p">[</span><span class="kt"><a href="../Protocols/AnyValidation.html">AnyValidation</a></span><span class="o">.</span><span class="k">Type</span><span class="p">]</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:10ValidationAAPAAE18safeSubvalidationsSayAA03AnyA0_pXpGvpZ"></a>
<a name="//apple_ref/swift/Variable/safeSubvalidations" class="dashAnchor"></a>
<a class="token" href="#/s:10ValidationAAPAAE18safeSubvalidationsSayAA03AnyA0_pXpGvpZ">safeSubvalidations</a>
</code>
<span class="declaration-note">
Extension method
</span>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Subvalidations that expect an input type that matches the validation&rsquo;s <code>Support</code> type.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">static</span> <span class="k">var</span> <span class="nv">safeSubvalidations</span><span class="p">:</span> <span class="p">[</span><span class="kt"><a href="../Protocols/AnyValidation.html">AnyValidation</a></span><span class="o">.</span><span class="k">Type</span><span class="p">]</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:10ValidationAAPAAE3runyy9SupportedQzKFZ"></a>
<a name="//apple_ref/swift/Method/run(_:)" class="dashAnchor"></a>
<a class="token" href="#/s:10ValidationAAPAAE3runyy9SupportedQzKFZ">run(_:)</a>
</code>
<span class="declaration-note">
Extension method
</span>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Runs the currenct validation and any subvalidations that support the <code><a href="../Protocols/Validation.html#/s:10ValidationAAP9SupportedQa">Supported</a></code> type.
This runs recursively until the bottom of the validation tree is found.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="nf">run</span><span class="p">(</span><span class="n">_</span> <span class="nv">value</span><span class="p">:</span> <span class="kt"><a href="../Protocols/Validation.html#/s:10ValidationAAP9SupportedQa">Supported</a></span><span class="p">)</span><span class="k">throws</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>value</em>
</code>
</td>
<td>
<div>
<p>The value to validate.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</section>
</div>
</li>
</ul>
</div>
</section>
</section>
<section id="footer">
<p>&copy; 2018 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2018-12-10)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.1</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>