<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Attachment failing to upload in ArcGIS Runtime SDK for iOS Questions</title>
    <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/attachment-failing-to-upload/m-p/382557#M3285</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The missing extension turned out to be the source of the error. Thanks so much!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 04 Dec 2019 17:32:16 GMT</pubDate>
    <dc:creator>CoryDavis</dc:creator>
    <dc:date>2019-12-04T17:32:16Z</dc:date>
    <item>
      <title>Attachment failing to upload</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/attachment-failing-to-upload/m-p/382554#M3282</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;My app allows the user to create a point feature and attach multiple photos to it. The photos are displayed in a custom callout which appears when the user taps the feature. The point is created and the attachments are added to it successfully; I know because I can see the photos when I select the point on the map and no client-side errors are thrown. However, the attachments are gone the next time I open the app. The point appears and I can see it in&amp;nbsp;ArcGIS Pro on the back end, but there are no attachments in the associated table.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This error is logged&amp;nbsp;in the Server Manager:&amp;nbsp;&lt;SPAN class="" data-contrast="auto" lang="EN-US" style="color: rgba(0, 0, 0, 0.847); background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px none rgba(0, 0, 0, 0.847); text-decoration: none solid rgba(0, 0, 0, 0.847); font-size: 14.6667px;"&gt;&lt;SPAN class="" style="background-color: inherit;"&gt;"&lt;STRONG&gt;Unable to complete upload operation, File size or type not supported for this service&lt;/STRONG&gt;". The photos are less than 2 MB each and I have never uploaded more than 3 at a time.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="" data-contrast="auto" lang="EN-US" style="color: rgba(0, 0, 0, 0.847); background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px none rgba(0, 0, 0, 0.847); text-decoration: none solid rgba(0, 0, 0, 0.847); font-size: 14.6667px;"&gt;&lt;SPAN class="" style="background-color: inherit;"&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="" data-contrast="auto" lang="EN-US" style="color: rgba(0, 0, 0, 0.847); background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px none rgba(0, 0, 0, 0.847); text-decoration: none solid rgba(0, 0, 0, 0.847); font-size: 14.6667px;"&gt;&lt;SPAN class="" style="background-color: inherit;"&gt;I know attachments are enabled for the layer because I successfully added this feature with a photo via ArcGIS Pro and it saved to the database. This leads me to believe the failure is either on the front end or perhaps a setting the attachment is violating, but I don't know how to check that.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="" data-contrast="auto" lang="EN-US" style="color: rgba(0, 0, 0, 0.847); background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px none rgba(0, 0, 0, 0.847); text-decoration: none solid rgba(0, 0, 0, 0.847); font-size: 14.6667px;"&gt;&lt;SPAN class="" style="background-color: inherit;"&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="" data-contrast="auto" lang="EN-US" style="color: rgba(0, 0, 0, 0.847); background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px none rgba(0, 0, 0, 0.847); text-decoration: none solid rgba(0, 0, 0, 0.847); font-size: 14.6667px;"&gt;&lt;SPAN class="" style="background-color: inherit;"&gt;Here are the steps to create the feature and any photo attachments:&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="" data-contrast="auto" lang="EN-US" style="color: rgba(0, 0, 0, 0.847); background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px none rgba(0, 0, 0, 0.847); text-decoration: none solid rgba(0, 0, 0, 0.847); font-size: 14.6667px;"&gt;&lt;SPAN class="" style="background-color: inherit;"&gt;1. The user presses a button which transitions to a new screen where they select photos.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;2. The user selects any number of photos from the gallery or takes new ones with the camera. This is done using UIImagePickerController.&lt;/P&gt;&lt;P&gt;3. The user presses&amp;nbsp;"done". The app prepares to transition to a view controller where the point attributes are set. The point is created in the "prepare" function.&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;CODE&gt;override func &lt;SPAN class="token function"&gt;prepare&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="keyword token"&gt;for&lt;/SPAN&gt; segue&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; UIStoryboardSegue&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; sender&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; Any&lt;SPAN class="operator token"&gt;?&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
        &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; segue&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;identifier &lt;SPAN class="operator token"&gt;==&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"create-photo-point-segue"&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
            let nc &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; segue&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;destination as&lt;SPAN class="operator token"&gt;!&lt;/SPAN&gt; NewFeatureNavigationController
            let vc &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; nc&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;topViewController as&lt;SPAN class="operator token"&gt;!&lt;/SPAN&gt; CreateFeatureViewController
            let &lt;SPAN class="keyword token"&gt;template&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; AGSFeatureTemplate&lt;SPAN class="operator token"&gt;?&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;photoFeatureLayer&lt;SPAN class="operator token"&gt;?&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;featureTable as&lt;SPAN class="operator token"&gt;?&lt;/SPAN&gt; AGSServiceFeatureTable&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;?&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;featureTemplates&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;
            vc&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="keyword token"&gt;template&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;template&lt;/SPAN&gt;
            
            &lt;SPAN class="comment token"&gt;//Create the new photo point feature with the photo attachments&lt;/SPAN&gt;
            let newAgsFeature &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;photoFeatureLayer&lt;SPAN class="operator token"&gt;?&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;featureTable as&lt;SPAN class="operator token"&gt;?&lt;/SPAN&gt; AGSServiceFeatureTable&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;?&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;createFeature&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;with&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;template&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;!&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
            newAgsFeature&lt;SPAN class="operator token"&gt;!&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;attributes&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;setValue&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;primaryLocation&lt;SPAN class="operator token"&gt;?&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;latitude&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; forKey&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"LATITUDE"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
            newAgsFeature&lt;SPAN class="operator token"&gt;!&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;attributes&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;setValue&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;primaryLocation&lt;SPAN class="operator token"&gt;?&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;longitude&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; forKey&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"LONGITUDE"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
            newAgsFeature&lt;SPAN class="operator token"&gt;!&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;attributes&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;setValue&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;primaryDate&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; forKey&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"TIMESTAMP"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
            let point &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;AGSPoint&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;x&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; primaryLocation&lt;SPAN class="operator token"&gt;!&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;longitude &lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; y&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; primaryLocation&lt;SPAN class="operator token"&gt;!&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;latitude&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; spatialReference&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;wgs84&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
            newAgsFeature&lt;SPAN class="operator token"&gt;!&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;geometry &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; point
            &lt;SPAN class="token function"&gt;attachTxtDocs&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;feature&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; newAgsFeature&lt;SPAN class="operator token"&gt;!&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; photoArray&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; photoSelectionData&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
            
            vc&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;feature &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; newAgsFeature
            vc&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;featureAttachments &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; photoSelectionData
            vc&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;hasAttachments &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token boolean"&gt;true&lt;/SPAN&gt;
            vc&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;layer &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; photoFeatureLayer&lt;SPAN class="operator token"&gt;!&lt;/SPAN&gt;
            nc&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;collectionPoint &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;self&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;navigationController as&lt;SPAN class="operator token"&gt;!&lt;/SPAN&gt; AddPhotoFeatureNavigationController&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;collectionPoint
            let mapVC &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;self&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;navigationController as&lt;SPAN class="operator token"&gt;!&lt;/SPAN&gt; AddPhotoFeatureNavigationController&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;mapVC
            mapVC&lt;SPAN class="operator token"&gt;?&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;navController &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; nc
            nc&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;mapVC &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; mapVC
            nc&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;intermediateVC &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; self
        &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
    &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;3a. The photos are serialized to txt documents (necessary to capture metadata) and attached to the newly-created point. I'm aware that&amp;nbsp;because the attachment is a text document that could be why it doesn't save, but I doubt it because I have an alternate function which&amp;nbsp;does not serialize the photo and it experiences the same problem.&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;CODE&gt;func &lt;SPAN class="token function"&gt;attachTxtDocs&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;feature&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt;AGSArcGISFeature&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; photoArray&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;UIImagePickerController&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;InfoKey&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt;Any&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
        var i &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;
        var tempFileUrls&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;URL&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;
        DispatchQueue&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;main&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;async &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
           SVProgressHUD&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;show&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;withStatus&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"Attaching Photos..."&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
        &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
        &lt;SPAN class="keyword token"&gt;for&lt;/SPAN&gt; photo in photoArray &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
            var type&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; String
            &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; let typeOptional &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;photo&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;UIImagePickerController&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;InfoKey&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;imageURL&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt; as&lt;SPAN class="operator token"&gt;!&lt;/SPAN&gt; URL&lt;SPAN class="operator token"&gt;?&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
                let urlTokens &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; typeOptional&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;absoluteString&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;split&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;separator&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"."&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
                type &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; urlTokens&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;urlTokens&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;count &lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;description
            &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
            &lt;SPAN class="keyword token"&gt;else&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
                type &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"jpg"&lt;/SPAN&gt;
            &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
            var imageData&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; Data&lt;SPAN class="operator token"&gt;?&lt;/SPAN&gt;
            &lt;SPAN class="keyword token"&gt;switch&lt;/SPAN&gt; type &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
            &lt;SPAN class="keyword token"&gt;case&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"jpg"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"jpeg"&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt;
                imageData &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;photo&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;UIImagePickerController&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;InfoKey&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;originalImage&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt; as&lt;SPAN class="operator token"&gt;!&lt;/SPAN&gt; UIImage&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;jpegData&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;compressionQuality&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0.5&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;!&lt;/SPAN&gt;
            &lt;SPAN class="keyword token"&gt;case&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"png"&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt;
                imageData &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;photo&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;UIImagePickerController&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;InfoKey&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;originalImage&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt; as&lt;SPAN class="operator token"&gt;!&lt;/SPAN&gt; UIImage&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;pngData&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;!&lt;/SPAN&gt;
            &lt;SPAN class="keyword token"&gt;default&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt;
                &lt;SPAN class="token function"&gt;print&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"Invalid type"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
            &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
            guard imageData &lt;SPAN class="operator token"&gt;!=&lt;/SPAN&gt; nil &lt;SPAN class="keyword token"&gt;else&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
                SVProgressHUD&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;dismiss&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
                &lt;SPAN class="keyword token"&gt;return&lt;/SPAN&gt;
            &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
            let fileName &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;serializePhoto&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;lat&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;String&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;geolocations&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;i&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;latitude&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
                                          lon&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;String&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;geolocations&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;i&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;longitude&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
                                          timestamp&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; timestamps&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;i&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;description&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
                                          fileType&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; type&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
                                          photoData&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; imageData&lt;SPAN class="operator token"&gt;!&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
            let fileUrl &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;URL&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;fileURLWithPath&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;NSTemporaryDirectory&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;appendingPathComponent&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;fileName&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;appendingPathExtension&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"txt"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
            tempFileUrls&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;append&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;fileUrl&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
            &lt;SPAN class="keyword token"&gt;do&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
                let photoData &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;try&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;Data&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;contentsOf&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; fileUrl&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
                feature&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;addAttachment&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;withName&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"attachment"&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;+&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;String&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;i&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
                                  contentType&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"txt"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
                                  data&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; photoData&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;attachment&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; error&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; in
                    SVProgressHUD&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;dismiss&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
                    &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; let error &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; error &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
                        &lt;SPAN class="token function"&gt;print&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;error&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;localizedDescription&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
                    &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
                    &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; attachment &lt;SPAN class="operator token"&gt;!=&lt;/SPAN&gt; nil &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
                        &lt;SPAN class="token function"&gt;print&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"Photo successfully attached."&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
                        self&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;removeTempDoc&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;fileUrl&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; fileUrl&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
                    &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
                &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
            &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
            &lt;SPAN class="keyword token"&gt;catch&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
                &lt;SPAN class="token function"&gt;print&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"Failed to fetch photo data from "&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;+&lt;/SPAN&gt; fileUrl&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;absoluteString&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
                &lt;SPAN class="keyword token"&gt;return&lt;/SPAN&gt;
            &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
            i &lt;SPAN class="operator token"&gt;+&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;
        &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
    &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;4. The feature's attributes are set and is loaded after the transition to the final view.&lt;/P&gt;&lt;P&gt;5. The user confirms the attributes are correct and hits "save". The edits are applied to the table.&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;CODE&gt;    func &lt;SPAN class="token function"&gt;applyEdits&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;to table&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt;AGSServiceFeatureTable&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
        SVProgressHUD&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;setDefaultMaskType&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;black&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
        DispatchQueue&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;main&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;async &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
            SVProgressHUD&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;show&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;withStatus&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"Saving"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
        &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
        table&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;applyEdits&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;completion&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;results&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; error&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; in
            SVProgressHUD&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;dismiss&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
            &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; let error &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; error &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
                &lt;SPAN class="token function"&gt;print&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;error&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
                let alert &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;UIAlertController&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;title&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"Alert!"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; message&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"Unable to create feature: \(error.localizedDescription)"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; preferredStyle&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;alert&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
                let okAction &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;UIAlertAction&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;title&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"OK"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; style&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="keyword token"&gt;default&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; handler&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; nil&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
                alert&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;addAction&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;okAction&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
                self&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;present&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;alert&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; animated&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="token boolean"&gt;true&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; completion&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; nil&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
                &lt;SPAN class="keyword token"&gt;return&lt;/SPAN&gt;
            &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
            &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; self&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;referenceFeature &lt;SPAN class="operator token"&gt;!=&lt;/SPAN&gt; nil &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
                self&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;deleteReferenceFeature&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
            &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;else&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
                self&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;navigationController&lt;SPAN class="operator token"&gt;?&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;dismiss&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;animated&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="token boolean"&gt;true&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; completion&lt;SPAN class="operator token"&gt;:&lt;/SPAN&gt; nil&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
            &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
        &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
    &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This app uses ArcGIS Runtime v100.6. The back end is ArcServer 10.7.1.&lt;/P&gt;&lt;P&gt;Can someone offer a solution?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 17:37:34 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/attachment-failing-to-upload/m-p/382554#M3282</guid>
      <dc:creator>CoryDavis</dc:creator>
      <dc:date>2021-12-11T17:37:34Z</dc:date>
    </item>
    <item>
      <title>Re: Attachment failing to upload</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/attachment-failing-to-upload/m-p/382555#M3283</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I'll preface this by saying that we experienced endless frustration with attachments in our own apps and have pretty much abandoned the use of them entirely in favor of an alternate upload workflow combined with a standalone database table for documenting photos and associated data. &amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;That said I'd try a couple of&amp;nbsp;things:&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;Up the max upload size on your server - I know you said the photos were only 2mb but was that before they were serialized? &amp;nbsp;Guessing the files are getting a lot larger when you do that.&lt;/LI&gt;&lt;LI&gt;Perhaps consider writing the metadata to as EXIF data rather than using the serialized txt approach. &amp;nbsp;That is exactly what EXIF data is for... &amp;nbsp;&lt;/LI&gt;&lt;/OL&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 04 Dec 2019 00:58:11 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/attachment-failing-to-upload/m-p/382555#M3283</guid>
      <dc:creator>MichaelDavis3</dc:creator>
      <dc:date>2019-12-04T00:58:11Z</dc:date>
    </item>
    <item>
      <title>Re: Attachment failing to upload</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/attachment-failing-to-upload/m-p/382556#M3284</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi &lt;A href="https://community.esri.com/migrated-users/362552"&gt;Cory&lt;/A&gt;,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Try adding a filetype suffix to the filename. Right now you're ‌naming them &lt;STRONG&gt;attachment0&lt;/STRONG&gt;, &lt;STRONG&gt;attachment1&lt;/STRONG&gt;, &lt;STRONG&gt;attachment2&lt;/STRONG&gt; etc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Can you try naming them&amp;nbsp;&lt;STRONG&gt;attachment0.txt&lt;/STRONG&gt;, &lt;STRONG&gt;attachment1.txt&lt;/STRONG&gt;, etc.?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And as Michael suggested, I would use EXIF data and store them as images. That way they'll be easily accessible to other components of the ArcGIS platform.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Nick&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 04 Dec 2019 01:25:38 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/attachment-failing-to-upload/m-p/382556#M3284</guid>
      <dc:creator>Nicholas-Furness</dc:creator>
      <dc:date>2019-12-04T01:25:38Z</dc:date>
    </item>
    <item>
      <title>Re: Attachment failing to upload</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/attachment-failing-to-upload/m-p/382557#M3285</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The missing extension turned out to be the source of the error. Thanks so much!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 04 Dec 2019 17:32:16 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/attachment-failing-to-upload/m-p/382557#M3285</guid>
      <dc:creator>CoryDavis</dc:creator>
      <dc:date>2019-12-04T17:32:16Z</dc:date>
    </item>
  </channel>
</rss>

