Difference between revisions of "Swift"

From Lost In Wonderlands
Jump to: navigation, search
(Swift Topics)
(P)
 
(57 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
= Swift =
 
= Swift =
 
'''NeXT Steps'''
 
  ''here everything has yet to be done !''
 
 
''coming soon'' :
 
 
 
'''''Everything You Always Wanted to Know on Swift... (But Were Afraid to Ask)'''''
 
''a collection of links of interest''
 
  
 
== See also ==
 
== See also ==
Line 17: Line 8:
  
 
* [[AppleSwift]]
 
* [[AppleSwift]]
 +
* [[Swift]]
 +
* [[SwiftUI]]
  
* [[item1]]
 
* [[item1]]
 
 
* [[item1]]
 
* [[item1]]
 
* [[item1]]
 
* [[item1]]
Line 166: Line 157:
 
=== books ===
 
=== books ===
 
* https://www.raywenderlich.com/books/data-structures-algorithms-in-swift/v3.0
 
* https://www.raywenderlich.com/books/data-structures-algorithms-in-swift/v3.0
 +
 +
 +
== Topics ==
 +
== A ==
 +
=== Application Transport Security ===
 +
* http://www.neglectedpotential.com/2015/06/working-with-apples-application-transport-security/
 +
* http://www.neglectedpotential.com/2016/06/network-security-changes-for-ios/
 +
* https://developer.apple.com/documentation/security/preventing_insecure_network_connections
 +
* https://developer.apple.com/documentation/bundleresources/information_property_list/nsapptransportsecurity
 +
* https://stackoverflow.com/questions/43257249/disable-app-transport-security-for-simulator-only
 +
* https://developers.google.com/admob/ios/app-transport-security
 +
* https://cocoacasts.com/how-to-add-app-transport-security-exception-domains
 +
* https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW33
 +
 +
== B ==
 +
== C ==
 +
 +
=== Compiler Directives ===
 +
* constants for Apple Platforms OS
 +
  iOS , tvOS, macOS, watchOS, iPadOS (should be this for iPad)
 +
 +
* directive model
 +
  #if os(iOS) || os(tvOS)
 +
      ...
 +
  #elseif (os(macOS)
 +
    ...
 +
  #endif
 +
 +
* In #if compiler directive in Swift, you need to enclosed '''valid statements'''.
 +
 +
 +
 +
You may need to write something like this:
 +
 +
  #if os(iOS)
 +
      var body: some View {
 +
          NavigationView{
 +
              ...
 +
          }
 +
          .navigationViewStyle(StackNavigationViewStyle())
 +
      }
 +
  #else
 +
      var body: some View {
 +
          NavigationView{
 +
                ...
 +
          }
 +
        .navigationViewStyle(DoubleColumnNavigationViewStyle())
 +
      }
 +
  #endif
 +
 +
Or this:
 +
  var body: some View {
 +
      let navView = NavigationView{
 +
      ...
 +
  }
 +
  #if os(iOS)
 +
      return navView
 +
      .navigationViewStyle(StackNavigationViewStyle())
 +
  #else
 +
      return navView
 +
      .navigationViewStyle(DoubleColumnNavigationViewStyle())
 +
  #endif
 +
  }
 +
 +
but not  this:  As you can see, ''.navigationViewStyle(StackNavigationViewStyle())'' is not a '''valid statement'''.
 +
      NavigationView {
 +
          ...
 +
      }
 +
  #if os(iOS)
 +
      .navigationViewStyle(StackNavigationViewStyle())
 +
  #endif
 +
 +
== D ==
 +
 +
=== Do, Try /Catch ===
 +
* https://stackoverflow.com/questions/30720497/swift-do-try-catch-syntax
 +
 +
== E ==
 +
== F ==
 +
== G ==
 +
== H ==
 +
 +
=== HTTPCookieStorage ===
 +
* https://developer.apple.com/documentation/foundation/httpcookiestorage
 +
 +
== I ==
 +
 +
=== issues with REST and URLSession ===
 +
* https://stackoverflow.com/questions/66492789/swift-httprequest-works-on-simulator-but-not-on-device-iphone-11
 +
* https://stackoverflow.com/questions/42705278/swift-url-session-and-url-request-not-working
 +
* https://stackoverflow.com/questions/39860879/swift-3-urlsession-urlrequest-not-working
 +
* https://stackoverflow.com/questions/28352674/http-request-in-swift-not-working
 +
* https://developer.apple.com/forums/thread/67085
 +
 +
== J ==
 +
 +
=== JSONDecoder ===
 +
* https://developer.apple.com/documentation/foundation/jsondecoder
 +
 +
=== JSONEncoder ===
 +
* https://developer.apple.com/documentation/foundation/jsonencoder
 +
 +
=== JSONSerialisation ===
 +
* https://developer.apple.com/documentation/foundation/jsonserialization
 +
 +
== K ==
 +
== L ==
 +
== M ==
 +
== N ==
 +
 +
=== NSAppTransportSecurity ===
 +
https://stackoverflow.com/questions/8023126/how-can-i-test-https-connections-with-django-as-easily-as-i-can-non-https-connec
 +
https://gist.github.com/claudiosanches/7012524
 +
https://www.google.com/search?client=safari&rls=en&q=ios++swift+url+maker+and+localhost++plus+port+number&ie=UTF-8&oe=UTF-8
 +
https://github.com/depoon/SwiftLocalhost
 +
* mostly on a simulator to access a http://localhost:portnum/service hosted on the same host
 +
* IOS  reinforce the access to HTTPS only since ioS 7
 +
* for sometime it was possible to grant htpp access in the info plist but now we have to grant more things
 +
<key>NSAppTransportSecurity</key>
 +
    <dict>
 +
        <key>NSAllowsArbitraryLoads</key>
 +
        <true/>
 +
    </dict>
 +
* local host or 127.0.0.1
 +
var rest_url = "http://127.0.0.1:8000/rest/users/"
 +
* https://docs.microsoft.com/fr-fr/xamarin/cross-platform/deploy-test/connect-to-local-web-services
 +
* https://stackoverflow.com/questions/25702354/ios-simulator-access-localhost-server/55686530
 +
* http://adaptivejs.mobify.com/v2.0/docs/debug-on-ios-devices-and-the-ios-simulator/
 +
* https://www.browserstack.com/question/663
 +
* https://learnappmaking.com/urlsession-swift-networking-how-to/
 +
* https://www.appsdeveloperblog.com/http-get-request-example-in-swift/
 +
 +
 +
=== NSURLConnection ===
 +
* https://developer.apple.com/documentation/foundation/nsurlconnection
 +
 +
== O ==
 +
== P ==
 +
 +
* print
 +
* debugPrint
 +
 +
special print keywords
 +
 +
* https://docs.swift.org/swift-book/ReferenceManual/Expressions.html#ID390
 +
 +
Literal        Type    Value
 +
{| class="wikitable" border="1"
 +
|-
 +
! Tag
 +
! Type
 +
! Description
 +
|-
 +
| #file
 +
| String
 +
| The name of the file in which it appears.
 +
|-
 +
| #fileID
 +
| String
 +
| The name of the file and module in which it appears.
 +
|-
 +
| #filePath
 +
| String
 +
| The path to the file in which it appears.
 +
|-
 +
| #line
 +
| int
 +
| The line number on which it appears.
 +
|-
 +
| #column
 +
| Int
 +
| The column number in which it begins.
 +
|-
 +
| #function
 +
| String
 +
| The name of the declaration in which it appears.
 +
|-
 +
| #dsohandle
 +
| UnsafeMutablePointer
 +
| The dso handle.
 +
|}
 +
 +
== Q ==
 +
== R ==
 +
 +
=== REST API call ===
 +
* https://stackoverflow.com/questions/24321165/make-rest-api-call-in-swift
 +
* https://www.appcoda.com/restful-api-library-swift/
 +
* https://abhimuralidharan.medium.com/universal-links-in-ios-79c4ee038272
 +
 +
=== testing it using curl ===
 +
* https://www.univ-orleans.fr/iut-orleans/informatique/intra/tuto/php/rest-api-tests-curl.html
 +
 +
==== sample code ====
 +
* https://github.com/Alamofire/Alamofire
 +
 +
== S ==
 +
== T ==
 +
 +
=== try /catch ===
 +
* https://www.hackingwithswift.com/example-code/language/how-to-use-try-catch-in-swift-to-handle-exceptions
 +
 +
== U ==
 +
 +
=== URl Cache ===
 +
* https://developer.apple.com/documentation/foundation/urlcache
 +
 +
=== URLSessionConfiguration ===
 +
* https://developer.apple.com/documentation/foundation/urlsessionconfiguration/
 +
* https://useyourloaf.com/blog/urlsessionconfiguration-quick-guide/
 +
* https://stackoverflow.com/questions/45785458/swift-urlsessionconfiguration
 +
 +
=== URLComponents, how to build a safe escaped url /uri ===
 +
* https://www.swiftbysundell.com/articles/constructing-urls-in-swift/
 +
* https://developer.apple.com/documentation/foundation/url_loading_system
 +
* https://developer.apple.com/documentation/xcode/allowing_apps_and_websites_to_link_to_your_content/defining_a_custom_url_scheme_for_your_app
 +
* https://www.appcoda.com/working-url-schemes-ios/
 +
* https://medium.com/swift2go/building-safe-url-in-swift-using-urlcomponents-and-urlqueryitem-alfian-losari-510a7b1f3c7e
 +
* https://www.avanderlee.com/swift/url-components/
 +
* https://www.raywenderlich.com/7565482-visually-rich-links-tutorial-for-ios-image-thumbnails
 +
* https://developer.apple.com/forums/thread/666662
 +
 +
==== sample code ====
 +
* https://github.com/PerfectExamples/Perfect-URL-Shortener
 +
* https://github.com/swisspol/GCDWebServer
 +
 +
=== URLCredentielStorage ===
 +
* https://developer.apple.com/documentation/foundation/urlcredentialstorage
 +
 +
=== URLRequest ===
 +
* https://developer.apple.com/documentation/foundation/urlrequest
 +
* https://cocoacasts.com/networking-fundamentals-how-to-make-an-http-request-in-swift
 +
* https://stackoverflow.com/questions/24016142/how-do-i-make-an-http-request-in-swift
 +
 +
=== URLSession ===
 +
* https://developer.apple.com/documentation/foundation/urlsession
 +
* https://developer.apple.com/documentation/foundation/urlsession/1409000-shared
 +
* https://www.raywenderlich.com/3244963-urlsession-tutorial-getting-started
 +
* https://learnappmaking.com/urlsession-swift-networking-how-to/
 +
* ttps://medium.com/@bachur.nicolas/urlsession-vs-alamofire-reflexion-autour-des-requetes-reseaux-a0c199da540c
 +
* hhttps://cocoacasts.com/networking-in-swift-meet-the-urlsession-family
 +
* https://stackoverflow.com/questions/41600446/urlsession-best-practice-multiple-requests
 +
* https://www.appsdeveloperblog.com/http-get-request-example-in-swift/
 +
 +
=== Using JSON with custom Type ===
 +
* https://developer.apple.com/documentation/foundation/archives_and_serialization/using_json_with_custom_types
 +
 +
== V ==
 +
== W ==
 +
== X ==
 +
== Y ==
 +
== Z ==
  
 
== swift versions ==
 
== swift versions ==
Line 185: Line 428:
  
 
== Sample codes ==
 
== Sample codes ==
 +
 +
=== Apple on GitHub for swift ===
 +
* https://github.com/apple
 +
 +
=== Rest API  ===
 +
* https://github.com/jocull/SharpProxy
 +
* https://github.com/depoon/SwiftLocalhost
 +
* https://github.com/Alamofire/Alamofire
 +
 +
 +
=== samples ===
 +
* https://www.appsdeveloperblog.com/swift-code-examples/
  
 
== Articles==
 
== Articles==
  
 
== Blogs ==
 
== Blogs ==
 +
* https://www.appsdeveloperblog.com/
  
 
== Tools link ==
 
== Tools link ==
  
 
== Books ==
 
== Books ==
 +
 +
== Trainings ==

Latest revision as of 10:53, 3 May 2022

Contents

Swift

See also

Swift

Swift Topics

Data Flow and Control Flow

Data Modeling

Language Interoperability

Class Bridging
Swift and Objective C and C


Cocoa Design Patterns and Swift

Swift with Style

Swift API design

Swift Standard Library

Swift protocols

protocols conformance

protocols

Swift Generics


Swift Patterns

 https://github.com/ochococo/Design-Patterns-In-Swift


Swift Algorithms

more algorithms

in python

in C++


tutorials

forums

books


Topics

A

Application Transport Security

B

C

Compiler Directives

  • constants for Apple Platforms OS
 iOS , tvOS, macOS, watchOS, iPadOS (should be this for iPad)
  • directive model
 #if os(iOS) || os(tvOS)
     ...
 #elseif (os(macOS)
    ...
 #endif
  • In #if compiler directive in Swift, you need to enclosed valid statements.


You may need to write something like this:

 #if os(iOS)
     var body: some View {
         NavigationView{
              ...
         }
         .navigationViewStyle(StackNavigationViewStyle())
     }
 #else
      var body: some View {
          NavigationView{
                ...
         }
        .navigationViewStyle(DoubleColumnNavigationViewStyle())
      }
 #endif

Or this:

 var body: some View {
      let navView = NavigationView{
      ...
  }
  #if os(iOS)
      return navView
      .navigationViewStyle(StackNavigationViewStyle())
  #else
      return navView
      .navigationViewStyle(DoubleColumnNavigationViewStyle())
  #endif
  }

but not this: As you can see, .navigationViewStyle(StackNavigationViewStyle()) is not a valid statement.

     NavigationView {
         ...
     }
 #if os(iOS)			
     .navigationViewStyle(StackNavigationViewStyle())
 #endif

D

Do, Try /Catch

E

F

G

H

HTTPCookieStorage

I

issues with REST and URLSession

J

JSONDecoder

JSONEncoder

JSONSerialisation

K

L

M

N

NSAppTransportSecurity

https://stackoverflow.com/questions/8023126/how-can-i-test-https-connections-with-django-as-easily-as-i-can-non-https-connec https://gist.github.com/claudiosanches/7012524 https://www.google.com/search?client=safari&rls=en&q=ios++swift+url+maker+and+localhost++plus+port+number&ie=UTF-8&oe=UTF-8 https://github.com/depoon/SwiftLocalhost

  • mostly on a simulator to access a http://localhost:portnum/service hosted on the same host
  • IOS reinforce the access to HTTPS only since ioS 7
  • for sometime it was possible to grant htpp access in the info plist but now we have to grant more things
<key>NSAppTransportSecurity</key>
   <dict>
       <key>NSAllowsArbitraryLoads</key>
       <true/>
   </dict>
  • local host or 127.0.0.1
var rest_url = "http://127.0.0.1:8000/rest/users/"


NSURLConnection

O

P

  • print
  • debugPrint

special print keywords

Literal Type Value

Tag Type Description
#file String The name of the file in which it appears.
#fileID String The name of the file and module in which it appears.
#filePath String The path to the file in which it appears.
#line int The line number on which it appears.
#column Int The column number in which it begins.
#function String The name of the declaration in which it appears.
#dsohandle UnsafeMutablePointer The dso handle.

Q

R

REST API call

testing it using curl

sample code

S

T

try /catch

U

URl Cache

URLSessionConfiguration

URLComponents, how to build a safe escaped url /uri

sample code

URLCredentielStorage

URLRequest

URLSession

Using JSON with custom Type

V

W

X

Y

Z

swift versions

WWDC 2020

WWDC2019

WWDC 2018

WWDC 2017

WWDC 2016

Sample codes

Apple on GitHub for swift

Rest API


samples

Articles

Blogs

Tools link

Books

Trainings