Xcode 간단한 사용법과 스위프트 콜렉션 타입

Dark Mode

이번 글에서는 스위프트 언어의 IDE인 Xcode 사용법을 간단히 알아보고, 스위프트의 콜렉션 타입에 대해서 알아보겠습니다. 시작하기전에 더 많은 스위프트 반복문 예제를 살펴보도록하죠.

더 많은 스위프트 반복문 예제

// 윤년 구하는 문제

func check(leapYear:Int) -> String
{
    if leapYear % 4 == 0
    {
        if leapYear % 100 == 0
        {
            if leapYear % 400 == 0
            {
                return "\(leapYear)년은 윤년입니다."
            } else
            {
                return "\(leapYear)년은 윤년이 아닙니다."
            }
        } else
        {
            return "\(leapYear)년은 윤년입니다."
        }
    } else
    {
        return "\(leapYear)년은 윤년이 아닙니다."
    }
}

print(check(leapYear: 400))



// 각 자리수 더하는 함수

func addAllDigit(num:Int) -> Int
{
    var returnValue:Int = 0
    var doubleNum:Int = num
    
    while doubleNum > 0
    {
        returnValue = returnValue + (doubleNum % 10)
        doubleNum = doubleNum / 10
    }
    
    return returnValue
}

print(addAllDigit(num: 5792))



// 숫자 리버스 함수

func reverse(num:Int) -> Int
{
    var returnValue:Int = 0
    var doubleNum:Int = num
    
    while doubleNum > 0
    {
        returnValue = returnValue * 10
        returnValue = returnValue + doubleNum % 10
        doubleNum = doubleNum / 10
    }
    
    return returnValue
}

print(reverse(num: 1234))



// 별 그리기

func drawStar(line:Int)
{
    var value:String = ""
    
    for index in 1...line
    {
        for _ in index..<line
        {
            value = value + " "
        }
        
        for _ in 1...(index * 2 - 1)
        {
            value = value + "*"
        }
        
        print(value)
        value = ""
    }
}

drawStar(line: 5)

Xcode 간단한 사용법

애플 개발자 사이트 또는 맥 앱스토어에서 Xcode 설치를 진행하고, Xcode를 실행 시켜줍니다. 그러면 다음과 같은 화면이 나타날텐데요.

새로운 프로젝트 생성을 위해 ‘Create a new Xcode project’를 선택해줍니다. 그러면 화면이 다음과 같이 넘어갑니다.

앱을 만들기 위한 템플릿 설정이 나오는데요. 우선, 가장 간단한 ‘Single View Application’을 선택해보겠습니다. 그러면 다음과 같이 템플릿이 설정되고 프로젝트에 대한 정보를 입력하는 창이 나타납니다.

‘Product Name’에는 임의로 원하는 이름을 입력해줍니다. 나머지 옵션도 일단 테스트를 위한 프로젝트인만큼 원하는대로 설정해줍니다. 단, Language는 반드시 Swift로 설정해주세요. Next를 눌러 다음으로 넘어가면.

저장 위치를 설정하는 화면이 나타나는데요. 여기서는 ‘Create Git repository on’ 옵션해제 하는것만 주의해주세요. 나중에 깃이라는 시스템을 활용할때만 필요한 옵션입니다.

드디어 설정이 끝났습니다! 개발할 수 있는 화면이 나타납니다. 작업 환경은 크게 윗네부분을 ‘툴바’, 왼쪽 부분을 ‘네비게이터’, 가운데 메인 부분을 ‘에디터’, 오른쪽 부분을 ‘유틸리티’, 가운데 부분을 ‘디버그 공간’이라고 합니다.

Xcode는 대략적으로 이렇게 생겼는데요. 이번 글에서는 Xcode에 대해 이쯤만 알아두고, 실제로 어플을 만들어야 할 때 본격적으로 알아보도록 하겠습니다.

스위프트 콜렉션 타입

스위프트 콜렉션 타입에는 3가지 종류가 있습니다. ‘배열’, ‘집합’, ‘사전’이 그 주인공인데요. 각 콜렉션 타입의 대략적인 구도는 다음 사진과 같습니다.

스위프트 배열

하나씩 자세히 알아보겠습니다. 배열은 인덱스와 그에에 대응하는 데이터로 이뤄진 자료 구조를 의미하는데요. 배열의 기본 문법은 다음과 같습니다.

var someInts:Array<Int> = Array<Int>()

하지만 배열을 나타낼때 기본 문법을 축약해서도 나타낼수 있고, 이를 더 많이 사용하는데요. 축약 문법은 다음과 같습니다.

var someInts:[Int] = [Int]()

배열 리터럴 문법은 대괄호를 사용하고, 다음과 같이 사용할 수 있습니다.

var someInts:[Int] = [1,2,3,4]

한편, 배열의 인덱스는 0부터 시작하고, 인덱스를 통해 배열의 값을 가져올 수 있는데요.

var someInts:[Int] = [1,2,3,4] 
print("\(someInts[0])")
//1이 출력됩니다.

스위프트 집합

스위프트 집합은 같은 타입의 데이터가 순서 없이 모여있는 자료구조입니다. 집합의 문법은 다음과 같습니다.

var someInts:Set<Int> = Set<Int>()

집합은 배열과 달리 축약 문법이 없고, 배열과 같은 리터럴 문법을 사용합니다.

var someInts:Set<Int> = [1,2,3,4]

집합에는 연산이 있다는 장점이 있는데요. 다음과 같은 연산을 할 수 있습니다.

집합 Set 연산의 사용 예시는 다음과 같습니다.

var oddDigits : Set = [ 1, 3, 5, 7, 9 ] 
let evenDigits : Set = [2, 4, 6, 8] 
let primeDigits : Set = [2, 3, 5, 7] 

oddDigits.intersection(evenDigits) 
oddDigits.symmetricDifference(primeDigits)

스위프트 사전

스위프트 사전은 순서가 정해져 있지 않은 데이터에 키 값을 통해 구분할 수 있는 자료구조인데요. 사전, Dictionary의 문법은 다음과 같습니다.

var someInts:Dictionary<String,Int> = [String:Int]()

Dictionary의 축약 문법은 다음과 같습니다.

var someInts:[String:Int] = [String:Int]()

Dictionary의 리터럴 문법은 다음과 같습니다.

var airports: [String:String] = ["ICH": "인천공항", "CJU": "제주공항"]

Dictionary의 데이터는 키 값을 통해 불러올 수 있습니다.

var airports: [String:String] = ["ICH": "인천공항"]
print("\(airports["ICH"])")
//인천공항 을 출력.

여태까지 개념을 이용한 스위프트 예제

// 요일 구하기

func getWeekDay(atMonth: Int, day: Int) -> String
{
    var week: [String] = ["Sat", "Sun", "Mon", "Tues", "Wed", "Thur", "Fri"]
    var value: Int = 0
    
    if atMonth == 1
    {
        value = day
    } else if atMonth == 2
    {
        value = 31 + day
    } else if atMonth == 3
    {
        value = 59 + day
    } else if atMonth == 4
    {
        value = 90 + day
    } else if atMonth == 5
    {
        value = 120 + day
    } else if atMonth == 6
    {
        value = 151 + day
    } else if atMonth == 7
    {
        value = 181 + day
    } else if atMonth == 8
    {
        value = 212 + day
    } else if atMonth == 9
    {
        value = 243 + day
    } else if atMonth == 10
    {
        value = 273 + day
    } else if atMonth == 11
    {
        value = 304 + day
    } else if atMonth == 12
    {
        value = 334 + day
    }
    
    return week[value % 7]
}

print(getWeekDay(atMonth: 9, day: 7))



// 중복 숫자 줄이기

func shoter(num: Int) -> String
{
    var num = num
    var list: [Int] = []
    var value: String = ""
    var count: Int = 0
    
    while num > 0
    {
        list.append(num % 10)
        num = num / 10
        count = count + 1
    }
    
    for index in 0..<(count - 1)
    {
        if index == count - 2
        {
            value = String(list[index]) + value
        } else if list[index] == list[index + 1]
        {
           
        } else
        {
            value = String(list[index]) + value
        }
    }
    
    return value
}

print(shoter(num: 112233355))



// 소수 찾기

func allPrimeNumber(endNum: Int) -> Array<Int>
{
    var list: [Int] = []
    var num: Int = 2
    var index: Int = 0
    var comp: Int = 1
    
    for _ in 0...(endNum - 2)
    {
        list.append(num)
        num = num + 1
    }
    
    while index < list.count
    {
        while comp < list.count
        {
            if list[comp] % list[index] == 0
            {
                list.remove(at: comp)
            } else
            {
                comp = comp + 1
            }
        }
        
        index = index + 1
        comp = index + 1
    }
    
    return list
}

print(allPrimeNumber(endNum: 30))



// 시저 암호

func ceasar(data: Array<String>, keyNum: Int) -> Array<String>
{
    var list: [String] = []
    var alphabet: [String] = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]
    var Alphabet: [String] = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]
    
    for num in 0..<data.count
    {
        for index in 0..<alphabet.count
        {
            var index = index
            if data[num] == alphabet[index]
            {
                if (index + keyNum) > 25
                {
                    index = index - 26
                    list.append(alphabet[index + keyNum])
                } else
                {
                    list.append(alphabet[index + keyNum])
                }
            }else if data[num] == Alphabet[index]
            {
                if (index + keyNum) > 25
                {
                    index = index - 26
                    list.append(Alphabet[index + keyNum])
                } else
                {
                    list.append(Alphabet[index + keyNum])
                }
            }
        }
    }
    
    return list
}

print(ceasar(data: ["a","D","x"], keyNum: 3))

In this article, I will briefly review the Swift language IDE, Xcode, and learn about Swift’s collection types. Before we get started, let’s look at more Swift loop statements.

More Swift Loop Examples

// 윤년 구하는 문제

func check(leapYear:Int) -> String
{
    if leapYear % 4 == 0
    {
        if leapYear % 100 == 0
        {
            if leapYear % 400 == 0
            {
                return "\(leapYear)년은 윤년입니다."
            } else
            {
                return "\(leapYear)년은 윤년이 아닙니다."
            }
        } else
        {
            return "\(leapYear)년은 윤년입니다."
        }
    } else
    {
        return "\(leapYear)년은 윤년이 아닙니다."
    }
}

print(check(leapYear: 400))



// 각 자리수 더하는 함수

func addAllDigit(num:Int) -> Int
{
    var returnValue:Int = 0
    var doubleNum:Int = num
    
    while doubleNum > 0
    {
        returnValue = returnValue + (doubleNum % 10)
        doubleNum = doubleNum / 10
    }
    
    return returnValue
}

print(addAllDigit(num: 5792))



// 숫자 리버스 함수

func reverse(num:Int) -> Int
{
    var returnValue:Int = 0
    var doubleNum:Int = num
    
    while doubleNum > 0
    {
        returnValue = returnValue * 10
        returnValue = returnValue + doubleNum % 10
        doubleNum = doubleNum / 10
    }
    
    return returnValue
}

print(reverse(num: 1234))



// 별 그리기

func drawStar(line:Int)
{
    var value:String = ""
    
    for index in 1...line
    {
        for _ in index..<line
        {
            value = value + " "
        }
        
        for _ in 1...(index * 2 - 1)
        {
            value = value + "*"
        }
        
        print(value)
        value = ""
    }
}

drawStar(line: 5)

Xcode Simple Usage

Install Xcode from the Apple developer site or the Mac App Store and run Xcode. Then the following screen will appear.

Select ‘Create a new Xcode project’ to create a new project. The screen then goes as follows.

I see template settings for creating apps. First, let’s select the simplest ‘Single View Application’. Then the template is set up and a window for entering information about the project appears.

Enter your desired name in ‘Product Name’. The rest of the options are set for the test as well. However, please set the language to Swift. Click Next to continue.

The screen to set the storage location appears. Be careful to disable the ‘Create Git repository on’ option here. This option is only needed if you use the system later on.

Finally, we’re done! The screen that you can develop appears. The work environment is largely referred to as the ‘Toolbar’ on the upper part, ‘Navigator’ on the left, ‘Editor’ on the center, ‘Utility’ on the right, and ‘Debug space’ in the middle.

Xcode looks like this roughly. In this article, I’ll take a look at Xcode at first, and I’ll look into it when I need to actually build an application.

Swift Collection Type

There are three types of swift collection types. ‘Array,’ ‘set,’ and ‘dictionary’ are the main characters. The approximate composition of each collection type is shown in the following photograph.

Swift Array

Let’s take a closer look at each one. An array is a data structure that consists of an index and its corresponding data. The basic syntax for arrays is:

var someInts: Array <Int> = Array <Int> ()

However, when expressing an array, you can display the basic grammar in abbreviated form and use it more. The abbreviated grammar is:

var someInts: [Int] = [Int] ()

The array literal grammar uses brackets, and you can use it like this:

var someInts: [Int] = [1,2,3,4]

On the other hand, the index of the array starts from 0, and you can get the value of the array through the index.

var someInts: [Int] = [1,2,3,4]
print ("\ (someInts [0])")
// 1 is output.

Swift set

A swift set is a data structure in which data of the same type are gathered out of order. The grammar of the set is:

var someInts: Set <Int> = Set <Int> ()

Unlike arrays, sets do not have abbreviated syntax, they use literal syntax like arrays.

var someInts: Set <Int> = [1,2,3,4]

The set has the advantage of having an operation. The following operations can be performed.

An example of the use of the Set Set operation is:

var oddDigits: Set = [1, 3, 5, 7, 9]
let evenDigits: Set = [2, 4, 6, 8]
let primeDigits: Set = [2, 3, 5, 7]

oddDigits.intersection (evenDigits)
oddDigits.symmetricDifference (primeDigits)

Swift Dictionary

Swift dictionaries are data structures that can be distinguished from unordered data through key values. The syntax of Dictionary, Dictionary is as follows.

var someInts: Dictionary <String, Int> = [String: Int] ()

The abbreviated syntax for Dictionary is:

var someInts: [String: Int] = [String: Int] ()

The literal syntax of Dictionary is:

var airports: [String: String] = ["ICH": "Incheon airport", "CJU": "Jeju airport"]

The data in the Dictionary can be retrieved via the key value.

var airports: [String: String] = ["ICH": "Incheon airport"]
print ("\ (airports [" ICH "])")
// Output Incheon Airport.

Swift example using the concept so far

// 요일 구하기

func getWeekDay(atMonth: Int, day: Int) -> String
{
    var week: [String] = ["Sat", "Sun", "Mon", "Tues", "Wed", "Thur", "Fri"]
    var value: Int = 0
    
    if atMonth == 1
    {
        value = day
    } else if atMonth == 2
    {
        value = 31 + day
    } else if atMonth == 3
    {
        value = 59 + day
    } else if atMonth == 4
    {
        value = 90 + day
    } else if atMonth == 5
    {
        value = 120 + day
    } else if atMonth == 6
    {
        value = 151 + day
    } else if atMonth == 7
    {
        value = 181 + day
    } else if atMonth == 8
    {
        value = 212 + day
    } else if atMonth == 9
    {
        value = 243 + day
    } else if atMonth == 10
    {
        value = 273 + day
    } else if atMonth == 11
    {
        value = 304 + day
    } else if atMonth == 12
    {
        value = 334 + day
    }
    
    return week[value % 7]
}

print(getWeekDay(atMonth: 9, day: 7))



// 중복 숫자 줄이기

func shoter(num: Int) -> String
{
    var num = num
    var list: [Int] = []
    var value: String = ""
    var count: Int = 0
    
    while num > 0
    {
        list.append(num % 10)
        num = num / 10
        count = count + 1
    }
    
    for index in 0..<(count - 1)
    {
        if index == count - 2
        {
            value = String(list[index]) + value
        } else if list[index] == list[index + 1]
        {
           
        } else
        {
            value = String(list[index]) + value
        }
    }
    
    return value
}

print(shoter(num: 112233355))



// 소수 찾기

func allPrimeNumber(endNum: Int) -> Array<Int>
{
    var list: [Int] = []
    var num: Int = 2
    var index: Int = 0
    var comp: Int = 1
    
    for _ in 0...(endNum - 2)
    {
        list.append(num)
        num = num + 1
    }
    
    while index < list.count
    {
        while comp < list.count
        {
            if list[comp] % list[index] == 0
            {
                list.remove(at: comp)
            } else
            {
                comp = comp + 1
            }
        }
        
        index = index + 1
        comp = index + 1
    }
    
    return list
}

print(allPrimeNumber(endNum: 30))



// 시저 암호

func ceasar(data: Array<String>, keyNum: Int) -> Array<String>
{
    var list: [String] = []
    var alphabet: [String] = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]
    var Alphabet: [String] = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]
    
    for num in 0..<data.count
    {
        for index in 0..<alphabet.count
        {
            var index = index
            if data[num] == alphabet[index]
            {
                if (index + keyNum) > 25
                {
                    index = index - 26
                    list.append(alphabet[index + keyNum])
                } else
                {
                    list.append(alphabet[index + keyNum])
                }
            }else if data[num] == Alphabet[index]
            {
                if (index + keyNum) > 25
                {
                    index = index - 26
                    list.append(Alphabet[index + keyNum])
                } else
                {
                    list.append(Alphabet[index + keyNum])
                }
            }
        }
    }
    
    return list
}

print(ceasar(data: ["a","D","x"], keyNum: 3))

댓글

Please enter your comment!
Please enter your name here