MỤC LỤC Mở đầu 1 Chương 1: Giới thiệu về cơ sở thực tập 4 1.1 Sơ lược về công ty 4 1.2 Lĩnh vực hoạt động chính 4 1.3 Tôn chỉ hoạt động 4 Chương 2: Kết quả thực hiện chuyên đề thực tập 5 Phần 1: Các thành phần của một ứng dụng iOS và ngôn ngữ Swift 5 2.1 Giới thiệu về hệ điều hành iOS 5 2.1.1 Cấu trúc của một ứng dụng iOS 5 2.1.2 Các trạng thái của ứng dụng iOS 7 2.1.3 Vòng đời của UIViewController 8 2.2 Ngôn ngữ lập trình Swift 10 2.2.1 Cơ bản về Swift 11 2.2.2 Array và Dictionary 15 2.2.3 Cấu trúc điều khiển 16 2.2.4 Hàm 17 2.2.5 Closure 18 2.2.6 Enumeration 19 2.2.7 Classes and Structures 20 2.2.8 Subscript 21 2.2.9 Inheritance(Kế Thừa) 22 2.2.10 Subclass(lớp con) 22 2.2.11 Mothod và Property 23 2.2.12 Handling Error 24 2.3 JSON 24 2.3.1 JSON là gì 24 2.3.2 Sử dụng JSON 25 2.3.3 Các kiểu dữ liệu của JSON 25 2.4 Giới thiệu Cocoapods 26 Phần 2: Xây dựng ứng dụng tìm kiếm địa điểm trên nền tảng iOS 28 2.5 Tổng quan về ứng dụng tìm kiếm địa điểm 28 2.6 Các công nghệ, kỹ thuật sử dụng để xây dựng nên ứng dụng 28 2.7 Các chức năng chính của ứng dụng 28 CHƯƠNG 3 : KẾT LUẬN VÀ KIẾN NGHỊ 31 Tài liệu tham khảo 32
Trang 1BỘ TÀI NGUYÊN VÀ MÔI TRƯỜNG HÀ NỘI TRƯỜNG ĐẠI HỌC TÀI NGUYÊN VÀ MÔI TRƯỜNG HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
*****************************
BÁO CÁO THỰC TẬP TỐT NGHIỆP
ĐỀ TÀI: XÂY DỰNG ỨNG DỤNG TÌM KIẾM ĐỊA ĐIỂM
TRÊN HỆ ĐIỀU HÀNH IOS
Cán bộ hướng dẫn : Vũ Hồng CôngSinh viên thực hiện : Đặng Nhân Anh
Trang 2LỜI CẢM ƠN
Trên thực tế không có sự thành công nào mà không gắn liền với những sự giúp
đỡ mọi người dù ít hay nhiều, dù trực tiếp hay gián tiếp Trong suốt thời gian học tậpnhất là trong quá trình thực tập, em đã nhận được rất nhiều sự quan tâm giúp đỡ nhiệttình của các thầy cô
Em xin cảm ơn Ban giám đốc công ty Sunnet đã cho phép và tạo điều kiệnthuận lợi cho em được thực tập ở Công ty
Em cũng xin gửi lời cảm ơn đến thầy Ts.Hà Mạnh Đào, Trưởng khoa côngnghệ thông tin, cùng các thầy cô giáo trong Khoa đã nhiệt tình giúp đỡ em trong quátrình học tập tại trường
Cuối cùng, em xin gửi lời cảm ơn chân thành tới gia đình và bạn bè đã luôngiúp đỡ, động viên và tạo điều kiện tốt nhất cho em trong suốt quá trình học tập cũngnhư trong cuộc sống
Vì năng lực có hạn nên bài báo cáo của em còn nhiều hạn chế và không thểtránh khỏi những thiếu sót, mong thầy cô và các bạn có những ý kiến đóng góp để em
có thể hoàn thiện và phát triển đề tài hơn
Em xin chân thành cảm ơn!
Hà Nội, ngày 18 tháng 04 năm 2016
Trang 3MỤC LỤC
Mở đầu 1
Chương 1: Giới thiệu về cơ sở thực tập 4
1.1 Sơ lược về công ty 4
1.2 Lĩnh vực hoạt động chính 4
1.3 Tôn chỉ hoạt động 4
Chương 2: Kết quả thực hiện chuyên đề thực tập 5
Phần 1: Các thành phần của một ứng dụng iOS và ngôn ngữ Swift 5
2.1 Giới thiệu về hệ điều hành iOS 5
2.1.1 Cấu trúc của một ứng dụng iOS 5
2.1.2 Các trạng thái của ứng dụng iOS 7
2.1.3 Vòng đời của UIViewController 8
2.2 Ngôn ngữ lập trình Swift 10
2.2.1 Cơ bản về Swift 11
2.2.2 Array và Dictionary 15
2.2.3 Cấu trúc điều khiển 16
2.2.4 Hàm 17
2.2.5 Closure 18
2.2.6 Enumeration 19
2.2.7 Classes and Structures 20
2.2.8 Subscript 21
2.2.9 Inheritance(Kế Thừa) 22
2.2.10 Subclass(lớp con) 22
2.2.11 Mothod và Property 23
2.2.12 Handling Error 24
2.3 JSON 24
2.3.1 JSON là gì 24
2.3.2 Sử dụng JSON 25
2.3.3 Các kiểu dữ liệu của JSON 25
2.4 Giới thiệu Cocoapods 26
Trang 42.5 Tổng quan về ứng dụng tìm kiếm địa điểm 28
2.6 Các công nghệ, kỹ thuật sử dụng để xây dựng nên ứng dụng 28
2.7 Các chức năng chính của ứng dụng 28
CHƯƠNG 3 : KẾT LUẬN VÀ KIẾN NGHỊ 31
Tài liệu tham khảo 32
Trang 5Trong cuộcn sống hang ngày của chúng ta, việc tìm kiếm những địa điểm xungquang như nhà hang, quán ăn, khu giải thì là hết sức cần thiết Việc có một ứng dụnggiúp người dung tìm kiếm địa điểm mình cần một cách dễ dàng, tích hợp lên chiếcđiên thoại thông minh, sẽ đem đến một sự tiện lợi to lớn cho người dùng.
Từ việc nhận thấy tiềm năng to lớn của phát triển ứng dụng cho điện thoạithông minh, kết hợp với sự cần thiết có một ứng dụng tìm kiếm địa điểm cho ngườidung nên em quyết định chọn đề tài: Xây dựng ứng dụng tìm kiếm địa điểm cho hệđiều hành iOS, kết hợp với kho dữ liệu địa điểm khổng lồ của Foursquare được cungcấp miễn phí
Đối tượng phạm vi và phương pháp thực hiện chuyên đề thực tập
Đối tượng thực hiện:
- Hệ điều hành iOS
-iOS SDK, X-code IDE
- Các Framework: Cocoa Touch, Foundation,
Trang 6-Nghiên cứu quy trình xây dựng 1 ứng dụng mobile, mà cụ thể ở đây là xâydựng ứng dụng trên hdh iOS, bao gồm việc nghiên cứu ngôn ngữ lập trình Swift
-Nghiên cứu bộ iOS SDK,các hàm API để xây dựng được ứng dụng
-Nghiên cứu các Framework cốt lõi để xây dựng lên ứng dụng iOS là CocoaTouch, Foundation,
-Các tài liệu do chính Apple phát hành miễn phí về ngôn ngữ lập trình Swift,phát triển ứng dụng iOS với Cocoa,
Mục tiêu và nội dung của chuyên đề
Mục tiêu: Nắm được cách thức xây dựng một ứng dụng trên iOS, xây dựng một
ứng dụng iOS đơn giản nhưng hoàn chỉnh
Nội dung
Thực trạng
iOS hiện là một trong những hệ điều hành phổ biến nhất trên thế giới, số lượngthiết bị chạy iOS rất lớn, từ đó ta có thể thấy được tiềm năng khổng lồ cho các nhàphát triển ứng dụng iOS Thế nhưng, việc phát triển ứng dụng iOS chưa bao giờ là đơngiả, nó đòi hỏi công sức và sự đầu tư tiền bạc của các Deverloper Đầu tiên là thiết bị
để lập trình, nhà phát triển cần phải có một chiếc Macbook hoặc Mapro,iMac – đây làcác thiết bị chạy hệ điều hành OS X của Apple
Tiếp đó cần phải hiểu được quy trình xây dựng một ứng dụng ios rất phức tạp,
để xây dựng ứng dụng iOS có thể dung 1 trong 2 ngôn ngữ là Objective-C và Swift,Objetctive-C là ngôn ngữ lâu đời, được hỗ trợ nhiều từ cộng đồng, thay vào đó nó lại
có cú pháp khá dị và khó tiếp cận Ngược lại Swift là ngôn ngữ mới và hiện đại, cúpháp dễ hiểu, nhưng số thư viện hỗ trợ chưa được phong phú
Sự cạnh tranh giữa các nhà phát triển ứng dụng cho iOS là rất lớn, vì nguồn thu
từ ứng dụng iOS là rất cáo so với các nền tảng khác, nên các nhà phát triển trên thếgiới ra rất đầu tư cho việc phát triển ứng dụng iOS, dẫn đến sự cạnh trạnh trênAppstore là rất khốc liệt
Hướng giải quyết
Để phát triển ưng dụng iOS, việc đầu tư là bắt buộc Nhà phát triền cần có mộtthiết bị chạy OS X để lập trình ứng dụng và ít nhất một thiết bị chạy iOS để kiểm thửứng dụng Do các thiết bị của Apple bán ra khá đắt, nên người dung có thể tận dụng
Trang 7việc sử dụng các thiết bị cũ, đã qua sử dụng nhưng còn đáp ứng được yêu cầu để cóthể lập trình
Các tài liệu về lập trình iOS hiện tại rất phong phú, đặc biệt các tài liệu, ebooktiếng anh được chia sẻ rât rộng rãi và miễn phí, giúp chúng ta có thể tiếp cận được vớicông việc lập trình iOS dễ dàng hơn
Nên nhắm vào các thị trường ngách, tức là các vấn đề mà các ứng dụng hiện tạitrên Appstore chưa đáp ứng được, hoặc đáp ứng chưa tốt để phát triển ứng dụng, từ đó
sẽ giảm bớt sự cạnh tranh và dễ thu hút người sử dụng Thêm vào đó, việc đầu tư vàoUX/UI là vô cùng quan trọng Việc có được trải nghiệm người dung tốt và một thiết kếđẹp mặt sẽ khiến ứng dụng được người dung ưa thích hơn
Trang 8Chương 1: Giới thiệu về cơ sở thực tập
Công ty cổ phần giải pháp công nghệ thông tin và truyền thông SUNNET 1.1 Sơ lược về công ty
Tên giao dịch: Công ty cổ phần giải pháp CNTT và truyền thông SunNet Ngày thành lập: 03/12/2007
Ban lãnh đạo:
Chủ Tịch HĐQT: Lê Tấn Hùng
Tổng Giám Đốc : Nguyễn Đức Đông
Giám Đốc Kỹ Thuật: Đỗ Đăng Quân
1.2 Lĩnh vực hoạt động chính
- Sản xuất và phân phối nội dung số cho mobile.
- Cung cấp dịch vụ trực tuyến trên mobile.
- Tư vấn, phát triển các giải pháp doanh nghiệp.
- Phát triển ứng dụng VoIP, truyền thông đa phương tiện, ứng dụng
trên nền Mobile, Embbed
- Tư vấn, triển khai các giải pháp nguồn mở.
- Gia công phần mềm.
1.3 Tôn chỉ hoạt động
Tôn chỉ hoạt động của Sunnet là: Bình đẳng- Cùng thành công -Bền vững -Lâudài SunNet mong muốn thiết lập mối quan hệ bình đẳng với mọi khách hàng và đốitác trên cơ sở hướng tới sự thành công của đôi bên, sự thành công ở đây bao hàm ýnghĩa phát triển bền vững và lâu dài Phương châm của Sunnet là: “Cùng phát triển,cùng thành công”
Trang 9Chương 2: Kết quả thực hiện chuyên đề thực tập
Phần 1: Các thành phần của một ứng dụng iOS và ngôn ngữ Swift
2.1 Giới thiệu về hệ điều hành iOS
iOS là hệ điều hành trên các thiết bị di động của Apple Ban đầu hệ điều hànhnày chỉ được phát triển để chạy trên iPhone (gọi là iPhone OS), nhưng sau đó nó đãđược mở rộng để chạy trên các thiết bị của Apple như iPod touch, iPad và Apple TV.Ngày 31 tháng 5, 2011, App Store của Apple chứa khoảng 500 000 ứng dụng iOS,[1]
và được tải về tổng cộng khoảng 15 tỷ lần Trong quý 4 năm 2010, có khoảng 26%điện thoại thông minh chạy hệ điều hành iOS
Giao diện người dùng của iOS dựa trên cơ sở thao tác bằng tay Người dùng cóthể tương tác với hệ điều hành này thông qua rất nhiều động tác bằng tay trên mànhình cảm ứng của các thiết bị của Apple
Phiên bản mới nhất của iOS là 9.3 ra ngày 21 tháng 3 năm 2016, dành cho cácthiết bị iPhone 4S, iPod 5, iPad 2, iPad Mini (thế hệ thứ nhất) trở lên và iPad Pro
Hệ điều hành này được tiết lộ tại Hội nghị và Triển lãm Macworld diễn ra vào 9tháng 1 năm 2007 và được phát hành vào tháng 9 năm đó Khi đó, hệ điều hành nàychưa có một cái tên riêng nên chỉ đơn giản là "iPhone chạy OS X" Ban đầu, ứng dụngbên thứ ba không được hỗ trợ Steve Jobs đã chỉ ra rằng những nhà phát triển có thểxây dựng các ứng dụng web mà "sẽ cư xử như những ứng dụng ban đầu trên iPhone".Vào ngày 17 tháng 10 năm 2007, Apple thông báo một bộ phát triển phần mềm đangđược xây dựng và họ dự định sẽ đưa nó đến "tay của các nhà phát triển vào tháng 2".Ngày 6 tháng 3 năm 2008, Apple đã phát hành bản dùng thử đầu tiên, cùng với một cáitên mới cho hệ điều hành, đó là "iPhone OS"
2.1.1 Cấu trúc của một ứng dụng iOS
Ứng dụng iOS sử dụng pattern M-V-C Điều đó có nghĩa là dữ liệu và business
logic được tách ra khỏi việc trình diễn dữ liệu
Khi bắt đầu khởi động, hàm UIApplicationMain tạo ra các đối tượng cơ bảnquan trọng, và quan trọng nhất là đối tượng UIApplication Nhiệm vụ của đối tượngnày là làm đơn giản hoá sự tương tác giữa hệ thống và các đối tượng khác trong ứngdụng
Trang 10Hình 2.1 Các đối tượng cơ bản của một ứng dụng iOS
Các đối tượng cơ bản bao gồm:
UIApplication: Quản lý vòng lặp sự kiện và các hành vi mức cao khác Thực tế
ít sử dụng đối tượng này, và thường chỉ sử dụng khi muốn truy cập đối tượng appdelegate
App delegate: Là đối tượng có mặt trong mọi ứng dụng iOS và là duy nhất
(shared instance)
Documents và Data model: Đây là các custom objects, có thể tạo ra khi khởi
tạo ứng dụng hoặc tạo ra khi cần thiết
Các đối tượng ViewControllers: Quản lý việc trình diễn nội dung ứng dụng
trên màn hình Đây là các đối tượng rất quan trọng vì những màn hình của ứng dụngiOS hầu hết là các ViewController Một ViewController quản lý một đối tượngUIView và tất cả các subviews của nó Khi được trình diễn, UIViewController hiển thịcác views của nó bằng cách thêm chúng vào cửa sổ của ứng dụng (window)
Đối tựng UIWindow: Hầu hết các ứng dụng chỉ có một Window Tuy nhiên
cũng có những ứng dụng có nhiều Window (để tạo một số hiệu ứng)
Trang 11Vòng lặp chính chấp nhận một số kiểu sự kiện và forward chúng tới đối tượngtiếp nhận (được gọi là responder)
2.1.2 Các trạng thái của ứng dụng iOS
Not running: Ứng dụng chưa được khởi động hoặc bị hệ thống đóng
Inactive: Ứng dụng đang chạy ở foreground nhưng hiện tại không nhận sự kiện
(có thể đang thực hiện code) Đây là trạng thái quá độ, trước khi chuyển sang mộttrạng thái khác
Active : Ứng dụng đang chạy ở foreground (ứng dụng hiện tại đang hiển thị) và
sẽ nhận các event Đây là trạng thái bình thường khi đang mở và sử dụng ứng dụng
Background : Ứng dụng ở trong background và đang thực thi mã nguồn Hầu
hết các ứng dụng đi vào trạng thái này trong thời gian ngắn trước khi bị kết thúc Tuynhiên, một ứng dụng đòi hỏi thêm thời gian thực thi có thể ở lâu hơn trong trạng tháinày so với các ứng dụng khác (download, play music, etc) Một ứng dụng cũng có thểkhởi động trực tiếp để đi vào trạng thái này
Suspended: Là trạng thái khi ứng dụng ở background nhưng không thực thi
code, chẳng hạn khi bấm vào nút Home để trở về màn hình chính của iPhone Khi ởtrong trạng thái này, ứng dụng được duy trì trong bộ nhớ nhưng không thực thi mãnguồn Khi bộ nhớ sắp hết, một số ứng dụng trong trạng thái Suspended có thể bị đóng
để nhường chỗ cho ứng dụng ở Foreground
Mỗi khi chuyển đổi trạng thái sẽ đi kèm với một lời gọi hàm trong đối tượngApp delegate Cụ thể như sau:
Trang 12Hình 2.2 Vòng đời của một ứng dụng iOS
*application:willFinishLaunchingWithOptions: Method đầu tiên được gọi
khi khởi động ứng dụng
* application:didFinishLaunchingWithOptions: Cho phép thực hiện bất cứ
khởi tạo nào trước khi ứng dụng hiển thị trên màn hình
*applicationDidBecomeActive: Được gọi trước khi ứng dụng chuẩn bị trở
thành ứng dụng foreground
* applicationWillResignActive: Ứng dụng sẽ ra khỏi foreground.
*applicationDidEnterBackground: Ứng dụng đã ra khỏi foreground và có thểkết thúc bất cứ lúc nào
*applicationWillEnterForeground: Ứng dụng sẽ ra khỏi background và trở
lại foreground nhưng vẫn chưa vào trạng thái active
* applicationWillTerminate: Được gọi khi ứng dụng bị đóng Method này sẽ
không được gọi khi ứng dụng vào trạng thái suspended
2.1.3 Vòng đời của UIViewController
Thường thì mỗi màn hình trong ứng dụng iOS là một UIViewController Đây làđối tượng cơ bản, và các ViewController khác đều phải kế thừa nó MỗiUIViewController quản lý một View và các subviews của nó Vòng đời củaUIViewController như sau:
Trang 13Hình 2.3 Vòng đời của một UIViewController
Có thể xem điểm bắt đầu là “Does the view exist” Từ đây một loạt các method được gọi:
- loadView: Thường được sử dụng trong các ứng dụng trước iOS5 Từ iOS 5
trở đi, method này thường không được sử dụng nữa
- viewDidLoad: Được gọi một lần khi lần đầu tiên đối tượng view của đối
tượng UIViewController hiển thị
- viewWillAppear: Có thể được gọi nhiều lần tuỳ theo view đó đã tồn tại hay
chưa Method này được gọi trước khi view hiển thị trên màn hình
- viewDidAppear: Tương tự viewWillAppear, có thể được gọi nhiều lần.
Method này được gọi sau khi view đã hiển thị
- didReceivingMemoryWarning: Khi view đã hiển thị và bộ nhớ bị sử dụng
quá nhiều, nó sẽ gọi hàm này để cảnh báo Có thể dùng hàm này để xoá dữ liệu dưthừa
Trang 14- viewWillDisappear/viewDidDisappear: Được gọi trước và sau khi view bị
Swift cung cấp các kiểu cơ bản như Int cho các số nguyên, Double và Float cho
sô thực , Bool cho giá trị True hoặc False và String cho chuỗi kí tự Swift cũng cungcấp 3 kiểu Collection như Array, Set và Dictionary để quản lý dạng danh sách mảng
Swift sử dụng các biến để lưu trữ và tham chiếu giá trị bởi một tên xác định.Swift sử dụng nhiều những giá trị không thay đổi được gọi là hằng số và mạnh hơnnhiều so với hằng số trong C Hằng số được sử dụng giúp cho code rõ ràng và an toànhơn trong lúc làm việc với các giá trị mà không cần thay đổi
Swift cũng giới thiệu các kiểu Optional để xử lý các trường hợp không có giátrị Optional có thể có một giá trị hoặc không có giá trị Optional an toàn và là mộttrong những tính năng mạnh mẽ nhất của Swift
Cuối năm 2015, Swift đã chính thức được Apple mở mã nguồn Từ thời điểmnày trở đi thì Swift bao gồm trình biên dịch, thư viện và debugger đã hoàn toàn trởthành mã nguồn mở
Trang 15Swift sẽ là mã nguồn mở theo bản quyền Apache 2.0, điều này có nghĩa là cácnhà phát triển phần mềm có thể sử dụng ngôn ngữ này theo cách họ thích thậm chí làcho mục đích thương mại và nó hỗ trợ cho nền tảng iOS, OS X và Linux.
Apple cũng vừa cho ra website swift.org để hỗ trợ cho ngôn ngữ mã nguồn mởSwift Ở đây các developer có thể tìm thấy các nội dung, tài liệu để thực hiện một dự
án dựa trên ngôn ngữ Swift giống như Apple đang làm trên GitHub
Dưới đây là một đoạn mã của chương trình HelloWord được viết bằng Swift:
Hình 2.5 Đoạn mã lệnh viết bằng Swift
2.2.1 Cơ bản về Swift
Đầu tiên, Swift tỏ ra linh hoạt trong điều nhỏ nhất của một ngôn ngữ lậptrình Đó là, dấu chấm phẩy Dấu chấm phẩy được đại đa số các ngôn ngữ lậptrình sử dụng để làm ký tự kết thúc một dòng lệnh Còn với Swift, dấu chấmphẩy vẫn với tác dụng là kết thúc một dòng lệnh đó Tuy nhiên, muốn haykhông muốn dùng dấu chấm phẩy đều được
Biến và Hằng
Hằng là giá trị không được thay đổi sau khi nó được khai báo.
Biến là giá trị có thể được thay đổi bằng một giá trị khác khi cần.
Trang 16Hằng và biến phải được khai báo trước khi sử dụng Phải khai báo các hằng với
từ khoá là let và biến với từ khoá là var
Có thể khai báo nhiều hằng hoặc nhiều biến như sau:
Có thể cung cấp các kiểu khi khai báo biến hoặc hằng, để rõ ràng hơn cho kiểugiá trị Được viết bằng dấu hai chấm và phía sau tên biến hoặc tên hằng
Ở đây có thể được đọc như sau: “khai báo biến gọi là xinchao có kiểu String”.Như vậy ta chỉ có thể gán chuỗi kí tự vào cho biến xinchao
Bây giờ ta có thể gán chuỗi kí tự bất kì vào cho biến xinchao:
Tên hằng và tên biến
Tên hằng và tên biến có thể chứa hầu hết bất kỳ character(kí tự), bao gồm cả kí tựUnicode
Tên hằng và tên biến không thể chứa các kí tự khoảng trắng, ký hiệu toán học,các mũi tên và không thể bắt đầu bằng một con số
Trang 17Khi đã khai báo một hằng hoặc một biến có kiểu nhất định, không thể khai báolại nữa với cùng tên, hoặc thay đổi kiểu khác.
Có thể thay đổi giá trị của biến có cùng kiểu
Swift được thiết kế để trở thành một ngôn ngữ an toàn, nên chỉ cho sử dụngbiến, hằng sau khi đã khởi gán giá trị cho biến, hằng Nếucố sử dụng biến, hằng khi nóchưa được khởi gán thì chương trình sẽ phát sinh lỗi Điều này là tương tự C#, khác sovới C, C++
nó tạo ra nhiều thuận tiện, dễ dàng trong việc xử lý cho người lập trình
Giống C# và Java, Swift cung cấp đầy đủ các kiểu dữ liệu như Int32, UInt8,Int16, UInt64, Double, Float, Tuy nhiên, khi làm việc với số nguyên, nếu khôngquan tâm đến kích thước vùng nhớ lắm thì nên dùng kiểu dữ liệu toàn năng được Swiftcung cấp là : Int, UInt Các kiểu dữ liệu này là các kiểu dữ liệu thông minh, nó sẽ tựthay đổi kích thước theo nền tảng mà đang chạy chương trình - tức là, nếu nền tảng là
32 bit thì kích thước sẽ là 32 bit, trên nền tảng 64 bit thì kích thước sẽ là 64 bit
Swift là an toàn kiểu, nên nó sẽ không cho phép gán một số nguyên cho mộtbiến kiểu String, hoặc gán một ký tự (kiểu Character) cho một biến kiểu Int (như C,C++) Swift còn an toàn hơn nữa ở chỗ, nó loại bỏ cú pháp ép kiểu ngầm định
Swift hỗ trợ tạo bí danh cho các kiểu dữ liệu Điều này rất hay vì nó sẽ cung cấpcác tên kiểu dữ liệu mới phù hợp hơn với ngữ cảnh Ví dụ: dùng tên kiểu dữ liệu làđiểm để tạo các biến chứa điểm thì sẽ dễ hiểu hơn là khai báo các biến đó với kiểu dữliệu là UInt8
String và kiểu ký tự
//Thay đổi giá trị của biến xinchao từ HelloWorld XinChao
xinchao= "XinChao"
Trang 18Điểm khác biệt đáng quan tâm nhất về String là khả năng sửa đổi (mutability).Trong Objective C cũng như C#, các chuỗi đều là chuỗi bất di bất dịch (immutable),
có nghĩa là sau khi gán một chuỗi cho biến thì chúng ta không thể chèn thêm ký tự,xoá ký tự, thay đổi ký tự trong chuỗi đó Nếu muốn làm những việc như vậy, phảidùng kiểu NSMutableString (của Objective C) hay kiểu StringBuilder (của C#) Điềunày đôi lúc gây ra sự bất tiện và làm gia tăng việc xử lý chuỗi Còn với Swift, việcmutable hay immutalbe được quyết định thông qua gán chuỗi cho biến hay hằng Nếugán chuỗi cho hằng thì chuỗi đó là immutable và gán cho biến thì có thể sửa đổi chuỗi
đó tuỳ thích Một cách xử lý khá là giản dị
Như ở phần trên đã đề cập tới, String của Swift là kiểu giá trị và khi thực hiệngán hoặc truyền tham số thì chuỗi sẽ được sao chép Cách xử lý này gần với tự nhiênhơn, nên người lập trình sẽ dễ dàng hơn để sử dụng Tuy nhiên, có người sẽ bảo rằngnhư vậy thì sẽ tốn hiệu năng xử lý hơn rất nhiều (vì sao chép luôn cả chuỗi như vậyvừa tốn bộ nhớ, vừa tốn hiệu năng xử lý sao chép chuỗi) Swift đã xử lý vấn đề nàyngầm bên dưới bằng cách : đầu tiên, vẫn chỉ gán địa chỉ (không sao chép nguyên chuỗi
ra vùng nhớ khác), chỉ cho đến khi gặp dòng lệnh thực hiện sửa đổi nội dung của chuỗithì chuỗi đó mới được sao chép ra vùng nhớ mới và các thao tác sửa đổi được thựchiện trên vùng nhớ này
Có thể dùng phép toàn + để nối chuỗi, ký tự; phép toán so sánh ==, != để sosánh hai chuỗi, hai ký tự; phép toán += để bổ sung chuỗi, ký tự vào cuối
Kiểu dữ liệu Tuple
Kiểu tuple là một trong hai kiểu dữ liệu mới của Swift
Kiểu tuple nhóm nhiều giá trị vào bên trong một giá trị kết hợp duy nhất Cácgiá trị trong tuple có thể thuộc bất kỳ kiểu dữ liệu nào và không cần phải giống nhau
Kiểu dữ liệu Optional
Đây là kiểu dữ liệu mới thứ hai của Swift
Ta dùng optional khi một biến (tại thời điểm nào đó trong chu trình sống củanó) có thể không chứa giá trị nào Khi lấy giá trị của một biến optional thì có thể nhậnđược câu trả lời kiểu như : Có chứa giá trị và nó là x hoặc hoàn toàn không chứa giá trịnào
//Kiểu Tuple