Tìm hiểu công nghệ swift, xây dựng ứng dụng học và thi tiếng anh
Trang 1BỘ CÔNG THƯƠNG
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP THỰC PHẨM TP HCM
KHOA CÔNG NGHỆ THÔNG TIN
Trang 2
-NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Khóa luận đáp ứng yêu cầu của luận văn cử nhân tin học
Tp.HCM, ngày …… tháng …… năm 2016
Giáo viên hướng dẫn
Trang 3NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Khóa luận đáp ứng yêu cầu của luận văn cử nhân tin học
Tp.HCM, ngày …… tháng …… năm 2016
Giáo viên phản biện
Trang 4LỜI CAM ĐOAN
Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi Các số liệu, kết quảnêu trong Luận văn là trung thực và chưa từng được ai công bố trong bất kỳ công trìnhnào khác
Tôi xin cam đoan rằng mọi sự giúp đỡ cho việc thực hiện Luận văn này
đã được cảm ơn và các thông tin trích dẫn trong Luận văn đã được chỉ rõ nguồn gốc
Sinh viên thực hiện Luận văn
Em cũng xin gửi lời cảm ơn sâu sắc và chân thành đến các quý Thầy Cô trong KhoaCông nghệ thông tin đã tận tình hướng dẫn, giảng dạy em trong suốt 4 năm học vừaqua, đó là nguồn kiến thức vô cùng quý báu để chúng em có thể tự tin bắt tay vào thựchiện đề tài này
Trang 5Cuối cùng, em muốn gửi lòng biết ơn sâu sắc tới gia đình và bạn bè đã ủng hộ em trongsuốt con đường học tập đại học, là nguồn động viên về mặt tinh thần cũng như vật chấtđể em có thể vượt qua những khó khăn trong học tập và trong quá trình làm luận văn.
Và riêng đối với chính mình, em cũng đã cố gắng hết sức khả năng của mình để hoànthành thật tốt luận văn đã được đề ra Tuy vậy, do còn thiếu kinh nghiệm thực tế nênkhi làm luận văn cũng không tránh nhiều sai sót, chúng em kính mong nhận được ýkiến đóng góp từ quý thầy cô và bạn bè
Thành phố Hồ Chí Minh, ngày 04 tháng 07 năm 2016
Sinh Viên
Trang 6TÓM TẮT KHÓA LUẬN
Ngày nay, Công nghệ thông tin (CNTT) đã chứng tỏ ưu thế và dần trở thành một phương tiện, một công cụ không thể thiếu được với sự phát triển mọi nghành nghề trong xã hội Trong những năm qua, nhiều nghành đã từng bước ứng dụng CNTT vào lĩnh vực chuyên môn và đã đạt được những kết quả đáng khích lệ
Khóa luận này nhằm mục đích phát triển ứng dụng học và thi tiếng anh online nhằm đơn giản hoá việc học tiếng anh cho người dùng trên thiết bị di động và máy tínhbảng
Khóa luận gồm các chương chính:
Chương 1: Tổng quan đề tài
Chương 2: Khảo sát hiện trạng
Chương 3: Giới thiệu ngôn ngữ Swift
Chương 4: Mô tả ứng dụng
Chương 5: Thiết kế giao diện và cài đặt phân hệ client
Chương 6: Tổng kết và kết luận
Chương 7: Danh mục tham khảo
Trang 7MỤC LỤC
Trang 8DANH SÁCH CÁC HÌNH ẢNH
Trang 10KÝ HIỆU, VIẾT TẮT THUẬT NGỮ
1 Client Hệ thống các máy trạm của cơ quan chức năng
2 Smartphone Thiết bị di động thông minh
3 iOS một hệ điều hành trên thiết bị di động
Trang 11Chương 1 TỔ
NG QUAN
ĐỀ TÀI
1.1 Lý do chọn đề tài
Trong cuộc sống chúng ta tiếng Anh là một ngôn ngữ rất quan trọng Khi ta làm việc bất cứ chuyên ngành nào cũng phải dùng tiếng anh Chúng ta cần tiếng Anh để có thể giao tiếp với khách hàng cũng như đọc tài liệu Do đó, em đã quyết định chọn đề tàiTìm hiểu ngôn ngữ Swift và xây dựng ứng dụng học, thi thử tiếng anh trên iOS để mọi người có thể dễ dàng hơn trong việc học Anh văn ở bất cứ nơi đâu chỉ với một chiếc smart phone Ngoài ra APP cũng cung cấp cho người dùng thi thử các bài thi mẫu của TOEIC, IELS mang lại lợi ích vô cùng to lớn cho việc học anh văn Ngoài ra, việc xây dựng ứng dụng có thể cung cấp các ứng dụng tiện ích cho cộng đồng và góp phần vào
sự phát triển của các thiết bị thông minh
1.2 Mục đích của đề tài
Mục đích của đề tài là tìm hiểu công nghệ Swift, xây dựng ứng dụng học và thi tiếng Anh để mọi người có thể cải thiện kỹ năng tiếng anh một cách hiệu quả Thao tác đơn giản trên APP
1.3 Đối tượng hướng đến trong đề tài
Đối tượng hướng đến trong đề tài là những người sử dụng các thiết bị iOS có nhu cầu học tiếng Anh, và thi thử các đề tiếng Anh mẫu
Trang 121.4 Phạm vi nghiên cứu
Phạm vi nghiên cứu của đề tài là tìm hiểu ngôn ngữ Swift cũng như các Kỹ thuật và Công nghệ lập trình trên thiết bị iOS, làm việc với hệ thống Client-Sever, các thao tác trên WebSever
Trang 13Chương 2 KH
ẢO SÁT HIỆN TRẠNG 2.1 Hiện trạng thị phần sử dụng Smartphone nói chung
2.1.1 Tổng quan chung
Android và iOS chiếm 95,7% tổng số smartphone được giao trong Q4/2015, chiếm93,8% trong cả năm So với hồi quý 3/2015 thì thị phần của bộ đôi hệ điều hành diđộng này đã tăng trưởng 4,5% và tăng 6,1% so với một năm trước đó IDC trước đâycũng cho biết rằng tổng lượng smartphone được giao đã lần đầu tiên cán mốc 1 tỉ máytrong năm 2015
Hình 2-1 Biểu tượng của Apple và Android
2014 và hiện đang chiếm thị phần lớn nhất: 78,1% iOS xếp hạng thứ hai với 51 triệuđơn vị được chuyển giao, tăng 6,7% so với năm trước đó và đang giữ thị phần 17,6%.Theo sau là Windows Phone với 8,8 triệu máy được giao trong ba tháng cuối năm
2015, tăng 46,7% so với năm 2014 và có thị phần 3%
Trang 14Hình 2-2 Bảng số liệu thị phần Smartphone trên thế giới
Năm 2015, Windows Phone ghi nhận mức tăng trưởng mạnh nhất với 46,7% trong giai đoạn Q3 - Q4/2015 và tăng đến 90,9% so với cả năm 2014 Nokia dẫn đầu toàn thị trường này với thị phần 89,3% Trong khi đó, BlackBerry thì đứng hạng 4 với chỉ 1,7 triệu chiếc điện thoại được giao, giảm mạnh 77% so với một năm về trước và
có thị phần hết sức nhỏ bé: 0,6% Đây là OS di động duy nhất ghi nhận mức giảm thịphần, và BlackBerry 7 vẫn đang vượt trội hơn so với BlackBerry 10
Hình 2-3 Thiết kế của màn hình Window phone
Trang 15BlackBerry bị trượt mất vị trí thứ 3 (giảm từ 6,4% xuống còn 2,9%) Nhưng dù sao chúng ta vẫn có tin tốt lành đến từ dâu đen, khi các sản phẩm mới chạy nền tảng
OS 10 tiêu thụ hết 1 triệu chiếc smartphone trong đầu năm 2015.Tuy nhiên, phần lớn các thiết bị di động của BlackBerry bán ra trong quý đầu đều là các mô hình OS 7
Hình 2-4 Top 4 hệ điều hành dành cho di động
Nền tảng Linux chỉ chiếm 1% trên tổng số thị phần (giảm 2,1%), nhưng khả năng trong khoảng thời gian đến, các con số sẽ được cải thiến bởi loạt nền tảng mới được ra mắt như Tizen, Mozilla, SailFish và Ubuntu Cuối cùng, thị phần nền tảng già côi Symbian sụt giảm chỉ còn 0,6% Tuy vậy, IDC vẫn mong đợi các nền tảng sơ khai trước đây vẫn có thể tồn tại đến năm 2015
Số lượng trong quý I/2015
Tỉ lệ % trong quý
Tỉ lệ tăng trưởng sau
1 năm
Trang 16I/2016 I/2015 Samsun
Total 334.9(triệu,chiếc) 100.0% 334.4(triệu chiếc) 100.0% 0.2%
Bảng 0-1 Bảng số liệu máy giao trong năm 2016
2.1.2 Thị phần thiết bị sử dụng HĐH iOS
Hình 2-5 Thị phần các thiết bị iOS
Trang 17Theo số liệu thống kê được Apple công bố đầu 4/2016, có 87% người dùng đã nângcấp hệ điều hành iOS 9, iOS 8 chiếm 11% và chỉ 2% sử dụng phiên bản thấp hơniOS đang thể hiện ưu thế trong việc chống phân mảng so với hệ điều hành Android.Thống kê cho thấy, phần lớn người dùng đang sử dụng phiên bản Android 4.1 JellyBean trong khi đó, phiên bản mới nhất 4.4 KitKat chỉ đạt 5,3% Quan trọng hơn,Android KitKat được giới thiệu với khả năng tối ưu hóa cho các thiết bị cấu hình thấp,tuy nhiên hầu hết những máy cao cấp mới nhận được bản nâng cấp này
Hình 2-6 Thống kê thị phần Android
Số lượng thiết bị iOS tăng 73% trong tổng số thiết bị được kích hoạt quý bốn, tăng72% trong quý ba và 69% trong quý hai của năm 2015 Android có sự sụt giảm nhẹ khi
số lượng thiết bị kích hoạt giảm 1% trong quý cuối năm, chiếm 26% tổng số thiết bịkích hoạt
Trang 18Hình 2-7 Thống kê thị phần Máy tính Bảng
Trong các thiết bị iOS của Apple, iPhone vẫn là sản phẩm được lựa chọn nhiều nhấtchiếm 54% số máy kích hoạt, iPad chiếm 19% Tính riêng máy tính bảng dành chodoanh nghiệp, iPad áp đảo hoàn toàn khi chiếm tới 91, 4% lượng máy kích hoạt trongquý cuối năm 2015
2.2 Hiện trạng sử dụng các ứng dụng tiếng anh hiện nay
Hình 2-8 Biểu tượng của iOS
Trang 19[3] Hiện nay, hệ điều hành iOS đã và đang phát triển lớn mạnh, với tốc độ tăng trưởng thật ấn tượng, hàng loạt kho ứng dụng iOS “mọc lên như nấm” Tương tự tại Việt Nam, hệ điều hành iOS đã là nguồn cảm hứng để những người Việt quảng bá với thế giới về hình ảnh chợ ứng dụng iOS không chỉ đa dạng, mà còn mang "chất Việt".
Theo Tổng cục Thống kê Việt Nam, tính đến 6 tháng đầu năm nay số thuê bao di động đang hoạt động tại Việt Nam đạt 120,7 triệu, một thị trường đầy tiềm năng phát triển cho các nền tảng di động Xu hướng sử dụng điện thoại thông minh (Smartphone), máytính bảng (tablet) đang nở rộ, giá sản phẩm cũng giảm nhiều tạo sức hút trên thị trường.Thiết bị di động dùng iOS đã tạo được bước đi khá vững chắc tại thị trường Việt Nam trong hai năm trở lại đây
Tính đến cuối tháng 6-2015, chợ ứng dụng Appstore hiện có hơn 1.000.000 ứng dụng (app) Số lượng ứng dụng hay và chất lượng tại đây tăng nhanh môi ngày
Hình 2-9 Learning English
Với đặc thù hệ điều hành mã nguồn mở và tự do khám phá nên hệ điều hành
iOS(Swift) là điểm nhấn của nhiều bạn trẻ khi bước vào con đường lập trình viên di động Điều này đã đưa các lập trình viên và iOS lại gần nhau hơn Tuy vậy, với số lượng người tham gia lập trình, số ứng dụng tung ra quá lớn, khâu kiểm duyệt sản phẩm của Appstore lại "rất thoáng", khiến tỉ lệ các ứng dụng độc hại trên Appstore cao hơn nhiều so với Google Play (kho ứng dụng dành cho hệ điều hành Android)
Trang 20Theo khảo sát cơ bản, hiện có nhiều website chia sẻ thông tin và ứng dụng iOS tại Việt Nam nhưng chất lượng của các nội dung chia sẻ vẫn còn là dấu hỏi, theo dạng "có bị gìthì ráng mà chịu" Nhiều chuyên gia bảo mật lên tiếng cảnh báo những nơi chia sẻ không chính thức ngoài Appstore hay các chợ ứng dụng uy tín có thể là nơi tội phạm mạng lợi dụng phát tán các ứng dụng độc hại, ứng dụng quảng cáo giả mạo đánh lừa người dùng Do đó, cần hết sức cảnh giác khi cài đặt các ứng dụng từ nguồn lạ, đáng nghi hay không có nhiều đánh giá cao từ cộng đồng sử dụng.
Vấn đề tác quyền cũng là một trong những điều rất đáng lo ngại khi bước vào một sân chơi mang tầm quốc tế Thống kê sơ bộ của Nhịp Sống Số cho thấy khá nhiều ứng dụng Việt thuộc lĩnh vực đọc sách/ truyện được phát triển bởi các nhóm hay công ty với số lượng tải rất lớn trên Appstore vẫn "làm ngơ" với bản quyền nội dung mà họ tích hợp vào sản phẩm Cụ thể, các ứng dụng mang nội dung văn học đã tùy tiện tích hợp toàn bộ nội dung tiểu thuyết, sách điện tử (ebook) đang hút khách trên thị
trường mà không thông qua bản quyền với các nhà xuất bản Nhiều người dùng còn bị đánh lừa khi một số ứng dụng cố tình lập lờ tên gọi hay logo trùng lặp với các đơn vị
uy tín nhằm thu hút lượt khách tải về
Trang 21Chương 3 GIỚ
I THIỆU NGÔN NGỮ
SWIFT 3.1 Giới thiệu chung
Hình 3-5 Biểu tượng của Swift
Swift là một ngôn ngữ lập trình hướng đối tượng của Apple dành cho việc phát triểniOS và OS X, được giới thiệu bởi Apple tại hội nghị WWDC 2014.Swift được mongđợi sẽ tồn tại song song cùng Objective-C, ngôn ngữ lập trình hiện tại dành cho các hệđiều hành của Apple.Swift được thiết kế là một ngôn ngữ có khả năng phòng chống lôicao Nó được biên dịch với trình biên dịch LLVM
- Được xem như một phần của Xcode 6.x IDE (hiện đang được Apple phát hànhdưới Xcode 7 dạng beta), Swift cũng là một ngôn ngữ cho giao diện lập trìnhCocoa và Cocoa Touch cho hệ điều hành OS X cho máy tính và iOS cho diđộng.
- Swift là một ngôn ngữ lập trình hoàn toàn mới có thể giúp quá trình phát triển
Trang 22ứng dụng trở nên dễ dàng hơn, nhanh hơn và ổn định hơn, tất cả nhằm tạo ranhững sản phẩm ứng dụng cho người dùng cuối tốt hết mức có thể
3.1.1 Đặc điểm
3.1.1.1 Cấu trúc ngôn ngữ bậc cao: đơn giản, chính xác
Các ngôn ngữ dạng script như Python rất dễ viết và test (kiểm thử), song chúng khôngmạnh mẽ và cũng không đủ nhanh để thực hiện các tác vụ phức tạp của ứng dụng Nóicách khác, Python không thực sự phù hợp để viết các game nặng, vốn có yêu cầu phảitận dụng tối đa sức mạnh của thiết bị Các ngôn ngữ lập trình truyền thống (ví dụ nhưObjective-C) mang tới hiệu năng khi chạy trên iPhone/iPad, cho phép tạo ra các ứngdụng phức tạp như iMovie hoặc Call of Duty Song, việc sử dụng Objective-C thường
đi kèm với một lượng lớn thời gian compile và test ứng dụng Việc học cách viếtObjective-C cũng là một quá trình dài, có thể gây khó khăn với các lập trình viên ítkinh nghiệm
Nếu thực hiện được tất cả các lời hứa của Apple, Swift sẽ mang tất cả các điểm mạnhcủa cả 2 loại ngôn ngữ script và compile truyền thống Trong một số thử nghiệmbenchmark, Swift cho hiệu năng nhanh hơn Python và thậm chí là nhanh hơn cảObjective-C Trên bộ IDE (phần mềm lập trình) Xcode của Apple, mã nguồn Swift sẽđược đồ thị hóa dựa trên tính năng playground theo thời gian thực Điều này có nghĩarằng lập trình viên có thể chạy và test mã nguồn Swift một cách dễ dàng không kém gìPython cả
Trang 233.1.1.2 Những lợi ích của Swift
Hình 3-6 Biểu tượng của Swift
- Khả năng phát triển ứng dụng di động và kiểm tra thành quả của mình theo thờigian thực sẽ giúp cho quá trình code của các lập trình viên trở nên nhanh và dễdàng hơn rất nhiều Ngoài ra, việc không phải chạy chương trình compiler vàcác chương trình test quá thường xuyên cũng sẽ tiết kiệm được sức mạnh phầncứng cho nhà phát triển Thay vì tập trung kiểm tra, thử nghiệm các tính năngnhỏ lẻ, lập trình viên Swift có thể dành nhiều thời gian để thực hiện các bài test
ở mức độ tích hợp cao hơn một cách kỹ càng hơn
- Lợi ích thứ 2 của Swift là các dòng code rất ngắn và dễ đọc Trong bài trình bàycủa Apple, 3 dòng code Objective C có thể gói gọn vào 1 dòng code Swift Điềunày sẽ đẩy nhanh quá trình phát triển ứng dụng và tăng hiệu quả cho quá trìnhbảo trì/vá lôi trong tương lai
- Việc lập trình với Swift cũng trực quan hơn nhờ phương thức sắp xếp hợp lý ởgiao diện sử dụng và kiểu hiển thị kết quả theo thời gian thực trong X CodeRuntime Tức trong lúc viết mã, kết quả sẽ ngay lập tức hiện ra để tiện việcchỉnh sửa và hình ảnh cũng có thể xem ngay từ bên trong IDE Ngoài ra, XCode cũng sẽ dựng các kịch bản thực hiện trong các ứng dụng, tính năng này
Trang 24giúp lập trình viên có thể quản lý ứng dụng khỏi bị sự cố tràn bộ nhớ
- Cuối cùng và có lẽ là quan trọng nhất, nếu Swift tạo ra các ứng dụng có sức épphần cứng thấp hơn Objective-C, chúng ta sẽ được tận hưởng trải nghiệm game
ấn tượng hơn trên các thiết bị iOS Khi kết hợp Swift cùng nền tảng Metal mớicủa Apple, ngay cả vi xử lý A7 cũ kỹ cũng có thể mang tới những trải nghiệm
đồ họa ấn tượng nhất
3.1.1.3 Điểm yếu của Swift
- Điểm yếu lớn nhất của Swift sẽ là tuổi đời quá trẻ của ngôn ngữ lập trình này
- Các nhà phát triển sẽ phải học lại một ngôn ngữ lập trình hoàn toàn mới
- Các nhà phát triển ứng dụng iOS sẽ mất một khoảng thời gian đáng kể để làmchủ ngôn ngữ mới của Apple
- Giảm tốc độ phát triển của hệ sinh thái ứng dụng Apple
- Một mối lo ngại khác có thể kể đến là các ứng dụng rác Do Swift sẽ giúp quátrình phát triển ứng dụng trở nên dễ dàng hơn trước đây rất nhiều, số lượng ứngdụng chất lượng kém xuất hiện trên gian hàng App Store có thể sẽ ra tăng Song,đây cũng không hẳn là một mối lo ngại thực sự cho Apple và người dùng củaQuả táo Trải qua giai đoạn chuyển tiếp này, Swift sẽ giúp mang các ứng dụngiOS và Mac lên một tầm cao mới
3.2 Một số cú pháp cơ bản trong Swift
3.2.1 Quy tắc đặt tên
- Ngôn ngữ swift có phân biệt hoa thường
- Tên biến không có dấu tiếng việt
- Tên biến không có khoảng trắng
- Tên biến không được bắt đầu bằng số
- Tên biến không được có ký tự đặc biệt ngoài dấu _
Trang 25- Tên biến không được đăt trùng với từ khoá ngôn ngữ (func, int , if , static)
3.2.2 Kiểu dữ liệu trong Swift
Kiểu dữ liệu sẽ giúp trình biên dịch xác định được loại dữ liệu (số nguyên, số thực,chuôi, ) mà chúng ta muốn lưu trữ là gì từ đó sẽ cấp phát lượng bộ nhớ tương ứng vớiloại dữ liệu mà chúng ta cần lưu trữ Swift hô trợ các kiểu dữ liệu cơ bản như sau:
- Int, String, Float, Bool, Array, Dictionary, Binary, Octal, Hexadecimal
3.2.4 Từ khoá thông dụng trong Swift
- Class: Khai báo class
- Func: Khai báo hàm
- Protocol: Khai báo protocol
- Private: Giới hạn phạm vi trong lớp mà biến thể hiện được khai báo
- Protected: Giới hạn phạm vi trong lớp và lớp con kế thừa mà biến thể hiện được khai báo
- Public: Không giới hạn phạm vi truy xuất
- Selector: Trả về một selector đã được biên dịch mà được định nghĩa thông qua tên phương thức
Trang 263.2.5 Khai báo biến trong Swift
Hình 3-0 Khai báo biến không cần gán thuộc tính
Hình 3-7 Khai báo biến gán thuộc tính,do “hang” là hằng nên sẽ bị lỗi
- Bạn có thể sử dụng bất kỳ ký tự nào bạn thích để đặt tên cho biến và hằng, baogồm cả những ký tự Unicode
- Phần kiểu dữ liệu [type] trong câu lệnh khai báo biến, hằng có thể có hoặckhông, nếu bạn không khai báo kiểu dữ liệu thì swift sẽ tự động xác định kiểu
dự liệu cho biết đó tại thời điểm biên dịch chương trình
- Giá trị không tự đổng chuyển sang 1 kiểu dữ liệu khác Nếu bạn bạn muốnchuyển đổi kiểu dữ liệu của 1 giá trị nào đó thì bản phải viết chính sát thể hiệncủa kiểu dữ liệu đó
Trang 273.2.6 Chuyển kiểu dữ liệu
Hình 3-8 Chuyển dữ liệu bất kỳ sang String
- Có 1 cách đơn giản hơn để chuyển đổi kiểu dữ liệu sáng String đó là viết giá trịcủa biết đó và trong dấu "\()"
3.2.7 Array, Dictionary
Hình 3-9 Khai báo array và cách sử dụng
- Tạo mảng array và dictionary bằng cách sử dụng dấu ngoặc vuông , việc truy cập từng phần tử của nó ta chỉ cần ghi vị trí và key vào dấu ngoặc vuông
- Để tạo mảng rông ta dung cú pháp:
Hình 3-10 Khai báo array rỗng
Các hàm xử lý thao tác mảng cơ bản :
Trang 28- Append (Thêm một phần tử vào mảng)
- count (Đếm số phần tử trong mảng)
- first (Lấy phần tử đầu tiên trong mảng)
- last (Lấy phần tử cuối cung trong mảng)
- removeAll (Xoá tất cả phần tử trong mảng)
- removeAtIndex (Xoá phần tử tại vị trí index)
- ……
Các hàm xử lý thao tác Dictionary cơ bản:
- updateValue (cập nhật giá trị theo key)
- removeValue (xoá value đó ra khỏi dictionary)
- key (Lấy mảng key của dictionary)
- value (Lấy mảng value của dictionary)
3.2.8 Chuỗi
Cách khai báo: var s: String = “Hello World”
Các hàm xử lý chuôi với String:
- Lengh : độ dài của chuôi (s)
- Character[index] ( Lấy vị trí từng chữ cái)
- ComponentsSeparatedByString(Cắt chuôi thành mảng)
- SubstringFromIndex ( Cắt chuôi từ vị trí index đến cuối)
- SubstringtoIndex (Cắt chuôi từ vị trí index đến đầu)
- rangeOfString: Tìm xem có chuôi nào tồn tại trong chuôi cho trước không
- stringByReplacingOccurrencesOfString: thay thế ký tự thành 1 ký tự cho trước
- compare : so sánh 2 chuôi
3.2.9 Kiểm tra kiểu dữ liệu
Những phương thức dưới đây sẽ kiểm tra kiểu:
Trang 29- isKindOfClass: đối tượng là hậu duệ hoặc thể hiện class ấy
- is: Kiểm tra có phải đối tương lớp đó k
- performSelector: gọi chính sách selector trên đối tượng
Hình 3-11 Chuyển dữ liệu bất kỳ sang String
3.2.10 Ép kiểu dữ liệu
Hình 3-12 Chuyển dữ liệu bất kỳ sang String
3.2.11 Khai báo vòng lặp,câu điều kiện
- Sử dụng if à switch dùng cho câu điều kiện, và sử dụng for-in, for, while và repeat-while để làm vòng lặp
Trang 30Hình 3-13 Khai báo vòng lặp while
- Trong câu điều kiện phải bắt buộc biểu thức dạng Boolean, nghĩa là trong if luôn luôn giá trị true hoặc false (vd: if index {} sẽ là lôi vì không có so sánh)
Hình 3-14 Khai báo vòng lặp for và câu điều kiện
- Có thể sử dụng if và let cùng nhau để tránh giá trị nil
- Một giá trị optional (giá trị có dấu chấm hỏi) là một giá trị có thể chứa giá trị và
có thể không có giá trị (nil) Việc ghi dấu ? sau kiểu dữ liệu được xem làoptional
Trang 31Hình 3-15 Khai báo vòng lặp và câu điều kiện
- Switch – case hô trợ bất kỳ kiểu dữ liệu nào và mở rộng việc so sánh giá trị,nó không giới hạn kiểu int và so sánh bằng
Hình 3-16 Khai báo switch case
Trang 323.2.12 Hàm và Class , Object
- Sử dụng “func” để khai báo hàm Gọi hàm theo tên mình đã đặt với các tham số truyền vào Sử dụng “->” + kiểu dữ liệu để xác định kiểu trả về
Hình 3-17 Khai báo hàm
- Tạo class với tên class đứng sau “class” được bao trong {}.những giá trị được khai báo trong class cũng tương tự như trên,hàm cũng vậy
Hình 3-18 Khai báo class
Trang 33Hình 3-19 Khởi tạo class
Việc khởi tạo 1 class cũng tương tự như 1 hàm Tên class + giá trị truyền vào Gọithuộc tính, hàm bằng dấu chấm quen thuộc như mọi ngôn ngữ khác
Hình 3-20 Khai báo class , khời tạo có tham số
từ khóa thì mặc định là required
Protocol được sử dụng trong các trường hợp:
o Khai báo các method dự kiến sẽ được thực thi
o Khai báo một interface cho một object trong khi ẩn đi class của nó
o Khảo sát tương đồng giữa các class mà không liên quan đến cấu trúc thứ
Trang 34Model-View-Controller là design pattern quan trọng nhất
Model-View-Controller là một design pattern ứng dụng trong quá trình phát triển cácứng dụng iOS mà theo đó các đối tượng được tạo ra sẽ gán cho một trong ba nhóm vaitrò sau: model, view hoặc controller
Trang 35Hình 3-22 Model – View – View Controller
MVC là trung tâm của một thiết kế tốt cho một ứng dụng Những lợi ích của việc ápdụng mô hình này là rất nhiều Trong ứng dụng, có nhiều đối tượng có xu hướng có thểtái sử dụng lại và giao diện Các ứng dụng xây dựng theo thiết kế MVC cũng dễ dàng
mở rộng hơn so với các ứng dụng khác Hơn thế nữa rất nhiều công nghệ và kiến trúccủa ứng dụng đều dựa trên mô hình MVC
MVC kiểm soát luồng như sau:
- Controller xử lý các sự kiện đầu vào từ các giao diện người dùng, và chuyển đổicác sự kiện vào một hành động sử dụng thích hợp, có thể hiểu đây là Model
- Model quản lý hành vi và dữ liệu của miền ứng dụng, đáp ứng yêu cầu thông tinvề trạng thái (thường là từ View), và đáp ứng các hướng dẫn để thay đổi trạngthái (thường là từ View Controller) Trong hệ thống điều khiển sự kiện, Modelthông báo cho các bộ quan sát (thường là các View) khi thông tin thay đổi họ cóthể phản ứng
- View làm cho Model thành một hình thức thích hợp cho tương tác, thường làmột phần tử giao diện người dùng Nhiều View có thể tồn tại một Model duynhất cho những mục đích khác nhau Một khung nhìn thường có một sự tươngứng 1-1 với một bề mặt hiển thị và biết cách làm thế nào để diễn tả cho nó
Trang 36chúng ta được khởi động bởi người dùng cho tới thời điểm ứng dụng kết thúc,UIKit framework quản lý rất nhiều hành vi cơ bản của ứng dụng Trái tim củaứng dụng là đối tượng UIApplication mà nhận được các sự kiện từ hệ thống vàchuyển chúng tới các đoạn mã của chúng ta để xử lý Để hiểu các đối tượngUIKit làm việc như thế nào với mã tùy chỉnh của chúng ta, chúng ta hãy tìmhiểu một chút về các đối tượng làm việc cho ứng dụng iOS Minh hoạ sau đây
sẽ biểu diễn các đối tượng thông dụng nhất trong ứng dụng iOS:
Hình 3-23 Đối tượng thông dụng trong iOS
- Controller nhận dữ liệu của người dùng nhập vào, khởi tạo một phản ứng bằng
Trang 37cách gọi các đối tượng Model Controller chấp nhận đầu vào từ người sử dụng vàchỉ thị Model và Model và khung nhìn để thực hiện hành động dựa trên đầu vào.Một vào ứng dụng MVC có thể là một tập hợp của nhóm ba Model/View/Controller,môi phần chịu trách nhiệm cho một yếu tố giao diện người dùng khác nhau Modelkhông nhất thiết chỉ đơn thuần là một cơ sở dữ liệu Model trong MVC cũng là cả dữliệu và vấn đề phạm vi logic cần thiết để thao tác dữ liệu trong ứng dụng Nhiều ứngdụng sử dụng một cơ chế lưu trữ liên tục, chẳng hạn như là một cơ sở dữ liệu để lưu trữdữ liệu MVC không đề cập cụ thể đến các lớp truy cập dữ liệu bởi vì nó đã hiểu ở lớpbên dưới hoặc được đóng gói bởi Model
3.4 Một số thao tác cơ bản
3.4.1 App Icon
App icon là biểu tượng của ứng dụng sẽ hiển thị ra màn hình iPhone sau khi ứng dụngđược cài đặt, đồng thời icon của ứng dụng cũng hiển thị lên App Store khi chúng tađem ứng dụng của mình lên App Store Có hai loại icon là icon dành cho ứng dụng trêniPhone và icon dành cho ứng dụng trên App Store App icon cho iPhone Retina là120x120, App icon cho App Store là 1024x1024
3.4.2 Loading Screen
Loading Screen là hình ảnh mà khi chạy ứng dụng lên sẽ thấy nó, Để chuẩn bị choLoading Screen cần chuẩn bị trước hình ảnh dạng PNG, kích thước 640x1136 (iPhone
5 trở lên), 750 x 1334 (iPhone 6) 414 x 736
3.4.3 Thay đổi App Name
App Name là tên của ứng dụng hiển thị bên dưới App icon trên màn hình iPhone
Trang 38Nhiều trường hợp vì tên ứng dụng quá dài nên không thể hiển thị hết trên màn hìnhiPhone, do đó cần phải đổi tên ứng dụng lại cho phù hợp, ngắn gọn để có thể hiện đượctên ứng dụng bên dưới icon, như vậy ứng dụng sẽ có tính thẩm mỹ hơn Để khắc phụctrường hợp này, chúng ta cần phải thay đổi lại App Name Truy cập tập tin plist và sửađổi Bundle Display Name thành tên mới của ứng dụng.
Hình 3-24 Thay đổi tập tin plist
Hình 3-25 Sửa bundle name hiển thị
Trang 393.4.4 Ẩn Status Bar
Việc ẩn status bar cho phép chạy ứng dụng của chúng ta toàn màn hình mà không phảithu nhỏ một phần giao diện dành chô cho status bar Trước tiên, chúng ta chọn tậptin plist trong project, sau đó thêm một dòng mới
Trang 40Hình 3-27 Thay đổi background bằng image 3.4.5.2 Background Color
Ngoài việc sử dụng hình ảnh làm background cho ứng dụng, nếu bạn yêu thích sự đơngiản, bạn có thể tạo background bằng cách dùng một màu mà bạn ưa thích Trong
Inspector selector pane, bạn chọn Attributes inspector, tìm đến phần Background.