1 00:00:00,000 --> 00:00:11,270 2 00:00:11,270 --> 00:00:14,340 >> DANIEL Armendáriz: Xin chào, tất cả mọi người, chào đón để phát triển ứng dụng iOS 3 00:00:14,340 --> 00:00:15,020 với nhanh chóng. 4 00:00:15,020 --> 00:00:15,870 Tôi Dan Armendáriz. 5 00:00:15,870 --> 00:00:18,920 Tôi precepter của máy tính khoa học ở đây tại Trường 6 00:00:18,920 --> 00:00:21,200 Kỹ thuật và khoa học ứng dụng. 7 00:00:21,200 --> 00:00:24,310 Và nhanh chóng là thực sự loại của một ngôn ngữ thực sự gọn gàng. 8 00:00:24,310 --> 00:00:27,190 Và tôi có một số kế hoạch cho ngày hôm nay. 9 00:00:27,190 --> 00:00:31,430 Vì vậy, trong một giờ tới hoặc lâu hơn, chúng tôi đang đi nhìn vào iOS phát triển ứng dụng riêng của mình 10 00:00:31,430 --> 00:00:36,640 sử dụng Xcode và thực sự tạo ra một số rất cơ bản, ứng dụng rất đơn giản. 11 00:00:36,640 --> 00:00:40,070 Và nhìn vào cách mà bạn thực sự có những ứng dụng, 12 00:00:40,070 --> 00:00:42,887 và xây dựng chúng, và thực sự đặt chúng trên một thiết bị iOS. 13 00:00:42,887 --> 00:00:44,970 Một số trong những điều mà chúng ta sẽ không nhìn vào 14 00:00:44,970 --> 00:00:47,540 sẽ bao gồm những thứ như thực thi một ứng dụng 15 00:00:47,540 --> 00:00:48,940 và đặt nó trên cửa hàng ứng dụng. 16 00:00:48,940 --> 00:00:52,930 Có rất nhiều hướng dẫn trực tuyến sẽ giúp bạn với điều đó khía cạnh của nó. 17 00:00:52,930 --> 00:00:56,230 Nhưng cũng bởi vì như một phần của CS50, bạn nhận được 18 00:00:56,230 --> 00:00:59,780 tham gia phát triển của Apple nhóm, nhóm phát triển ứng dụng của CS50. 19 00:00:59,780 --> 00:01:02,790 Nếu bạn không làm điều đó được nêu ra và bạn đang liên kết với CS50, 20 00:01:02,790 --> 00:01:04,810 Tôi khuyên bạn nên làm điều đó bởi vì đó 21 00:01:04,810 --> 00:01:08,820 là làm thế nào bạn có thể tạo ra một số chương trình trong Xcode, 22 00:01:08,820 --> 00:01:11,890 xây dựng chúng, và thực sự đặt chúng trên một số thiết bị iOS của bạn 23 00:01:11,890 --> 00:01:14,087 nếu bạn thực sự có một thiết bị iOS vật lý. 24 00:01:14,087 --> 00:01:16,670 Nếu bạn không có một iOS vật lý thiết bị đó là nhiều hơn tốt. 25 00:01:16,670 --> 00:01:19,810 Bạn thực sự có thể phát triển cho iOS. 26 00:01:19,810 --> 00:01:22,390 Và Xcode có một mô phỏng cho phép bạn 27 00:01:22,390 --> 00:01:26,570 để xem ứng dụng của bạn trong hành động trên máy tính của bạn. 28 00:01:26,570 --> 00:01:30,440 Nhưng nó loại là một điều gọn gàng để thực sự chơi và tương tác 29 00:01:30,440 --> 00:01:34,235 với ứng dụng của bạn trên một thiết bị thực tế. 30 00:01:34,235 --> 00:01:37,360 Vì vậy, có một vài yêu cầu để thực sự làm tất cả của sự phát triển này. 31 00:01:37,360 --> 00:01:39,151 Một trong số đó là bạn phải có một máy Mac. 32 00:01:39,151 --> 00:01:44,770 Nó phải được chạy 10.9.4 hoặc mới hơn để làm phát triển nhanh chóng với. 33 00:01:44,770 --> 00:01:47,770 >> Bạn có thể sử dụng một đầu Phiên bản để phát triển 34 00:01:47,770 --> 00:01:50,810 với Objective C cho iOS và Mac. 35 00:01:50,810 --> 00:01:53,990 Nhưng tôi đề nghị, và rất nhiều các ví dụ mà chúng ta sẽ thấy ngày hôm nay, 36 00:01:53,990 --> 00:01:55,700 sử dụng 10.10 Yosemite. 37 00:01:55,700 --> 00:02:00,910 Vì vậy, nếu bạn chưa nâng cấp, đó là một lý do tốt để làm như vậy. 38 00:02:00,910 --> 00:02:05,480 Bây giờ Xcode 6.1 là phiên bản mới nhất của môi trường phát triển tích hợp 39 00:02:05,480 --> 00:02:08,979 mà Apple cung cấp miễn phí mà bạn có thể tải về từ cửa hàng ứng dụng. 40 00:02:08,979 --> 00:02:11,220 Và tôi khuyên bạn cũng chạy phiên bản mới nhất. 41 00:02:11,220 --> 00:02:14,700 >> Nếu bạn tình cờ được chạy trước phiên bản, Xcode 5 và dưới đây chỉ 42 00:02:14,700 --> 00:02:16,741 chỉ đơn giản là không hỗ trợ nhanh chóng nào. 43 00:02:16,741 --> 00:02:19,490 Và các phiên bản beta của sáu, đã được phát hành trong mùa hè, 44 00:02:19,490 --> 00:02:21,770 không hỗ trợ nhanh chóng, nhưng có được một số lượng rất lớn 45 00:02:21,770 --> 00:02:25,220 những thay đổi trong ngôn ngữ, đủ để mã mà bạn 46 00:02:25,220 --> 00:02:28,320 sẽ xem xét và bạn có thể tìm thấy trên internet 47 00:02:28,320 --> 00:02:33,294 sẽ không thực sự biên dịch đúng trong các phiên bản trước của Xcode. 48 00:02:33,294 --> 00:02:35,460 Vì vậy, một lần nữa, nếu bạn làm chưa có một tài khoản nhà phát triển, 49 00:02:35,460 --> 00:02:38,560 Tôi khuyên bạn nên đi đến developer.apple.com. 50 00:02:38,560 --> 00:02:42,240 Đăng ký, tạo một tài khoản nhà phát triển, và tham gia vào đội ngũ phát triển ứng dụng CS50. 51 00:02:42,240 --> 00:02:45,530 Điều đó sẽ cung cấp cho bạn một cơ hội để biên dịch các ứng dụng của bạn 52 00:02:45,530 --> 00:02:47,840 và đặt chúng trên thiết bị của bạn. 53 00:02:47,840 --> 00:02:49,222 OK, vì vậy, hãy bắt đầu. 54 00:02:49,222 --> 00:02:50,930 Điều đầu tiên chúng ta sẽ làm được 55 00:02:50,930 --> 00:02:55,140 để thực sự tạo ra một rất Dự án đơn giản trong Xcode 56 00:02:55,140 --> 00:02:59,530 mà sẽ cho phép bạn làm cho một ứng dụng. 57 00:02:59,530 --> 00:03:03,170 >> Vì vậy, nếu bạn chưa có Xcode mở, đi trước và mở nó 58 00:03:03,170 --> 00:03:04,270 và tạo ra một dự án mới. 59 00:03:04,270 --> 00:03:06,570 Một màn hình đặc biệt sẽ mở ra và sẽ cung cấp cho bạn 60 00:03:06,570 --> 00:03:08,800 một số tùy chọn về những gì nó là bạn muốn làm. 61 00:03:08,800 --> 00:03:12,170 Chỉ cần nói rằng bạn muốn tạo một dự án mới, một ứng dụng mới. 62 00:03:12,170 --> 00:03:15,650 Cửa sổ này sẽ bật lên, giả sử bạn đang sử dụng Xcode 6.1. 63 00:03:15,650 --> 00:03:17,650 Ngay bây giờ, và cho Thời gian của buổi hội thảo này, 64 00:03:17,650 --> 00:03:19,990 chúng ta sẽ được sử dụng xem ứng dụng duy nhất, chỉ 65 00:03:19,990 --> 00:03:22,590 sắp xếp của một ứng dụng cơ bản để có được chân của bạn ướt. 66 00:03:22,590 --> 00:03:25,200 Và bạn có thể chi nhánh ra ngày của riêng bạn từ đó. 67 00:03:25,200 --> 00:03:27,660 >> Nhấn Next ở thời điểm này. 68 00:03:27,660 --> 00:03:30,796 Bây giờ ở đây có một vài điều mà bạn có thể muốn nhập. 69 00:03:30,796 --> 00:03:32,670 Tên sản phẩm là đặt tên cho dự án của bạn. 70 00:03:32,670 --> 00:03:34,859 Trong trường hợp này, tôi chỉ sẽ gọi nó Seminar1 71 00:03:34,859 --> 00:03:36,150 bởi vì nó là ví dụ đầu tiên của chúng tôi. 72 00:03:36,150 --> 00:03:38,290 Tên tổ chức, trong trường hợp này chỉ là tên của tôi. 73 00:03:38,290 --> 00:03:41,760 Tất nhiên bạn có thể thay đổi nó tên riêng của bạn, hoặc để CS50. 74 00:03:41,760 --> 00:03:46,160 Nhận dạng tổ chức, nếu bạn xảy ra để có một trang web chỉ mất 75 00:03:46,160 --> 00:03:49,940 tên miền trong ngược lại, com.yourname. 76 00:03:49,940 --> 00:03:54,200 và sau đó là tên của sản phẩm sẽ xuất hiện tự động 77 00:03:54,200 --> 00:03:55,820 sau đó như nhận diện bó. 78 00:03:55,820 --> 00:03:59,200 >> Rõ ràng là các ngôn ngữ mà chúng tôi sẽ được sử dụng cho ngày hôm nay là nhanh chóng. 79 00:03:59,200 --> 00:04:02,590 Bạn có thể, tất nhiên, sử dụng Objective C cho rằng, nhưng ngày hôm nay sẽ được nhanh chóng. 80 00:04:02,590 --> 00:04:04,920 Và chúng tôi sẽ cho bây giờ nói các thiết bị phổ quát, vì vậy 81 00:04:04,920 --> 00:04:06,900 nó hoạt động trên cả iPad và iPhone. 82 00:04:06,900 --> 00:04:10,040 Và chúng ta sẽ rời khỏi lõi dữ liệu không được kiểm soát để giữ 83 00:04:10,040 --> 00:04:12,830 dự án tương đối đơn giản trong thời gian này. 84 00:04:12,830 --> 00:04:14,430 Vì vậy, chúng ta hãy đi trước và bấm Next. 85 00:04:14,430 --> 00:04:16,471 Và nó sẽ hỏi tôi nơi mà tôi muốn lưu nó. 86 00:04:16,471 --> 00:04:19,250 Tôi sẽ chỉ cần lưu nó vào máy tính của tôi bây giờ. 87 00:04:19,250 --> 00:04:22,267 >> Được rồi, vậy bây giờ đây là những gì sẽ xảy ra khi bạn thực sự mở Xcode. 88 00:04:22,267 --> 00:04:24,100 Và nhận thấy rằng Điều đầu tiên mà bạn nhìn thấy 89 00:04:24,100 --> 00:04:28,770 là dấu chấm than này nói không có bản sắc ký được tìm thấy. 90 00:04:28,770 --> 00:04:31,520 Tôi cố tình làm điều này trên máy tính của tôi và tôi 91 00:04:31,520 --> 00:04:34,220 hy vọng rằng tôi sẽ có thể thực sự sửa chữa nó, 92 00:04:34,220 --> 00:04:37,860 vì tôi muốn bạn để xem cách này sẽ thực sự làm việc trên máy tính của riêng bạn. 93 00:04:37,860 --> 00:04:40,400 >> Hãy kích vấn đề sửa chữa. 94 00:04:40,400 --> 00:04:45,400 Nó sẽ hỏi bạn nếu bạn có một tài khoản nhà phát triển táo hiện có. 95 00:04:45,400 --> 00:04:48,330 Đây là nơi mà gia nhập CS50 nhóm phát triển ứng dụng 96 00:04:48,330 --> 00:04:51,240 là rất quan trọng để bạn không chỉ có một tài khoản ứng dụng, 97 00:04:51,240 --> 00:04:53,690 nhưng bạn cũng có năng lực để ký các ứng dụng 98 00:04:53,690 --> 00:04:56,420 và đặt chúng trên thiết bị iOS của bạn. 99 00:04:56,420 --> 00:04:58,957 Đây là cách kích not-- vấn đề sửa chữa là không cần thiết 100 00:04:58,957 --> 00:05:01,040 nếu bạn chỉ cần đi tới xây dựng và phát triển địa phương, 101 00:05:01,040 --> 00:05:03,520 hoàn toàn trong trình giả lập iOS. 102 00:05:03,520 --> 00:05:05,820 >> Nhưng bây giờ tôi đang đi để phát triển và đặt chúng 103 00:05:05,820 --> 00:05:08,160 trên iPad của tôi, đó sẽ là có thể phát sóng là tốt. 104 00:05:08,160 --> 00:05:10,770 Vì vậy, tôi muốn thực sự thêm này. 105 00:05:10,770 --> 00:05:13,670 Và nó sẽ hỏi tôi cho ID apple của tôi. 106 00:05:13,670 --> 00:05:15,700 Vì vậy, nó sẽ được điều này. 107 00:05:15,700 --> 00:05:18,940 Và tôi phải lấy của tôi mật khẩu, mà là ở đây. 108 00:05:18,940 --> 00:05:27,760 Vì vậy, cho tôi chỉ một giây để thấy rằng, và sao chép, và dán nó ở đây. 109 00:05:27,760 --> 00:05:28,580 >> Nhấp vào Thêm. 110 00:05:28,580 --> 00:05:31,095 Nó sẽ hỏi tôi mà đội bóng tôi muốn tham gia. 111 00:05:31,095 --> 00:05:33,240 Tôi sẽ làm học kỹ thuật. 112 00:05:33,240 --> 00:05:35,680 Bấm Tham gia. 113 00:05:35,680 --> 00:05:37,780 Rất tiếc, đó là một sai lầm. 114 00:05:37,780 --> 00:05:40,730 Hãy làm điều này. 115 00:05:40,730 --> 00:05:42,060 Hy vọng rằng một trong đó sẽ làm việc. 116 00:05:42,060 --> 00:05:44,220 Một điều đó vẫn không làm việc. 117 00:05:44,220 --> 00:05:46,610 Chúng tôi đang chạy ra khỏi những cái tốt ở đây. 118 00:05:46,610 --> 00:05:48,260 OK, cái này nên làm việc. 119 00:05:48,260 --> 00:05:50,816 Bây giờ đóng đó. 120 00:05:50,816 --> 00:05:54,450 Bây giờ chúng ta hãy làm trường kỹ thuật, nhấp chọn. 121 00:05:54,450 --> 00:06:00,190 >> Và bây giờ hy vọng sau một vài giây, bạn can-- OK, 122 00:06:00,190 --> 00:06:02,550 Tôi sẽ thu hồi và yêu cầu. 123 00:06:02,550 --> 00:06:05,410 Oh man, điều này sẽ không làm việc. 124 00:06:05,410 --> 00:06:08,890 OK, tôi sẽ cố gắng một khác nhau. 125 00:06:08,890 --> 00:06:11,167 Hãy làm điều này ở đây. 126 00:06:11,167 --> 00:06:17,020 127 00:06:17,020 --> 00:06:19,310 Trình diễn trực tiếp được không tôi. 128 00:06:19,310 --> 00:06:22,540 Chúng tôi có thể trở lại chỉ xây dựng hoàn toàn tại địa phương, 129 00:06:22,540 --> 00:06:25,050 nhưng đó sẽ là OK trong trường hợp này. 130 00:06:25,050 --> 00:06:28,560 >> Vì vậy, ở đây, trong khi điều này là thực sự làm việc, những gì chúng ta sẽ làm là chỉ cần 131 00:06:28,560 --> 00:06:31,190 tạo ra một rất đơn giản Xin chào thế giới ứng dụng. 132 00:06:31,190 --> 00:06:32,340 Vì vậy, đây là Xcode. 133 00:06:32,340 --> 00:06:37,300 Và nếu bạn không nhìn thấy nó nữa, nó có thể là một chút đáng sợ lúc đầu. 134 00:06:37,300 --> 00:06:41,430 Có rất nhiều tấm, có một rất nhiều doodads trong nhiều lĩnh vực. 135 00:06:41,430 --> 00:06:44,300 Nhưng chỉ nhận ra rằng có thực sự một số thành phần chính 136 00:06:44,300 --> 00:06:46,580 đến môi trường phát triển này. 137 00:06:46,580 --> 00:06:51,090 Trên xa bên trái là tất cả các file có thể áp dụng cho chương trình của bạn 138 00:06:51,090 --> 00:06:52,997 hoặc dự án cụ thể của bạn. 139 00:06:52,997 --> 00:06:55,080 Chúng tôi sẽ phải click xung quanh trên một số trong số họ và chúng tôi sẽ 140 00:06:55,080 --> 00:06:57,660 chỉ ra nhiều nhất cái quan trọng theo thời gian. 141 00:06:57,660 --> 00:06:59,650 Về phía bên phải, chúng tôi có một tập các thuộc tính. 142 00:06:59,650 --> 00:07:02,920 Và tất cả các thuộc tính, có là tấm khác nhau cho các thuộc tính. 143 00:07:02,920 --> 00:07:06,770 Các tấm sẽ thay đổi tùy thuộc vào bối cảnh của các nội dung chính, đó 144 00:07:06,770 --> 00:07:08,290 xảy ra để được ở giữa. 145 00:07:08,290 --> 00:07:11,740 Bây giờ giữa các thực thể hiển thị bạn nhiều thứ, ví dụ 146 00:07:11,740 --> 00:07:13,290 tự mã của bạn. 147 00:07:13,290 --> 00:07:17,070 Hoặc bạn có thể thực sự khi have-- bạn click vào storyboard mà 148 00:07:17,070 --> 00:07:21,270 là, bằng cách này, chỉ cần một đồ họa đại diện của người sử dụng của bạn 149 00:07:21,270 --> 00:07:25,350 giao diện cho application-- của bạn sau đó cửa sổ các thuộc tính 150 00:07:25,350 --> 00:07:27,334 trên bên phải rất sẽ thực sự thay đổi. 151 00:07:27,334 --> 00:07:29,750 Bây giờ có một vài khác những điều mà tôi muốn chỉ. 152 00:07:29,750 --> 00:07:33,360 Bạn có thể sắp xếp các khám phá xung quanh trong môi trường trên của riêng bạn. 153 00:07:33,360 --> 00:07:35,730 Nhưng một trong những điều mà đã được rất hữu ích 154 00:07:35,730 --> 00:07:38,470 là nút này ở đây, trên bên phải của cửa sổ. 155 00:07:38,470 --> 00:07:41,230 Có nút này trông giống như trên xa 156 00:07:41,230 --> 00:07:46,090 còn lại nó có một đoạn tiếp theo là hai vòng tròn và loại 157 00:07:46,090 --> 00:07:49,540 hai mũi tên chỉ xa nhau. 158 00:07:49,540 --> 00:07:52,640 Nếu bạn chuyển đổi giữa các soạn thảo tiêu chuẩn, trong đó 159 00:07:52,640 --> 00:07:55,560 là một xa bên trái, một trong những đó là lựa chọn mặc định, 160 00:07:55,560 --> 00:08:01,040 và hai vòng tròn chồng chéo nhau, những gì bạn thực sự nhận 161 00:08:01,040 --> 00:08:02,210 là một panel kép. 162 00:08:02,210 --> 00:08:04,240 >> Và điều này là thực sự sẽ giúp ích cho chúng tôi 163 00:08:04,240 --> 00:08:07,330 khi chúng ta cần phải liên kết các hạng mục trong giao diện người dùng để mã. 164 00:08:07,330 --> 00:08:09,330 Và chúng ta sẽ nói thêm về mà chỉ trong một khoảnh khắc. 165 00:08:09,330 --> 00:08:12,050 Nhưng nhận ra rằng nếu bạn nhận được thậm chí nhiều tấm như thế này, 166 00:08:12,050 --> 00:08:15,830 bạn có thể đơn giản hóa tầm nhìn của bạn chỉ một chút bằng cách nhấn trở lại 167 00:08:15,830 --> 00:08:20,680 về biên tập duy nhất của bạn. 168 00:08:20,680 --> 00:08:21,580 Cho đến nay rất tốt. 169 00:08:21,580 --> 00:08:24,560 Vì vậy, về cơ bản, chúng tôi có các mã trên bên trái, các thuộc tính bên phải, 170 00:08:24,560 --> 00:08:28,260 và bất cứ điều gì nó là chúng tôi đang làm việc trên đây ở trung tâm. 171 00:08:28,260 --> 00:08:30,390 >> Vì vậy, ở đây tôi đã nhấp trên kịch bản chính. 172 00:08:30,390 --> 00:08:33,350 Và kịch bản, một lần nữa, là một cách trong Xcode 173 00:08:33,350 --> 00:08:38,110 mà bạn thực sự có thể tạo ra sử dụng của bạn Giao diện sử dụng chỉ cần kéo và thả 174 00:08:38,110 --> 00:08:39,130 kỹ thuật. 175 00:08:39,130 --> 00:08:41,190 Và như vậy cho chúng tôi rất Ứng dụng đầu tiên này 176 00:08:41,190 --> 00:08:42,720 chính xác là những gì chúng ta sẽ làm. 177 00:08:42,720 --> 00:08:45,950 Chúng ta sẽ đi xuống phần rất xa dưới bên phải 178 00:08:45,950 --> 00:08:49,900 của màn hình, trong đó có chứa một loạt các yếu tố người sử dụng 179 00:08:49,900 --> 00:08:53,270 mà sau đó bạn có thể nhấp chuột và kéo để tạo ra các giao diện người dùng của bạn. 180 00:08:53,270 --> 00:08:55,550 >> Bây giờ tất cả các yếu tố này được gọi là quan điểm 181 00:08:55,550 --> 00:08:57,370 vì nó cung cấp một số loại xem. 182 00:08:57,370 --> 00:09:00,190 Có một điểm ảnh, cho Ví dụ, để thực hiện 183 00:09:00,190 --> 00:09:01,740 một hình ảnh về giao diện người dùng. 184 00:09:01,740 --> 00:09:04,310 Có một xem bảng để thực hiện một bảng. 185 00:09:04,310 --> 00:09:05,190 Vv và vv. 186 00:09:05,190 --> 00:09:08,250 Có một loạt các quan điểm mà bạn có thể chọn ở đây. 187 00:09:08,250 --> 00:09:11,100 Vì vậy, chỉ cho bây giờ chúng ta sẽ để tìm kiếm cho một nhãn. 188 00:09:11,100 --> 00:09:13,550 Bạn chỉ có thể di chuyển qua tất cả các danh sách đó là có. 189 00:09:13,550 --> 00:09:15,460 Nhưng có những tìm kiếm thanh ở dưới cùng 190 00:09:15,460 --> 00:09:19,460 mà làm cho nó dễ dàng hơn để xác định quan điểm cụ thể mà bạn thực sự 191 00:09:19,460 --> 00:09:22,020 muốn kéo vào giao diện người dùng của bạn. 192 00:09:22,020 --> 00:09:23,560 >> Tìm thấy nhãn của tôi. 193 00:09:23,560 --> 00:09:28,430 Tôi sẽ kéo nó ở đây, trực tiếp vào ứng dụng mẫu của tôi. 194 00:09:28,430 --> 00:09:30,130 Ngay ở đó ở giữa có vẻ tốt. 195 00:09:30,130 --> 00:09:33,180 Và tôi sẽ gõ "Hello World!" 196 00:09:33,180 --> 00:09:33,810 Nhấn Enter. 197 00:09:33,810 --> 00:09:34,877 Bây giờ tôi có một nhãn. 198 00:09:34,877 --> 00:09:36,960 Nó không giống như nó trung khá đúng. 199 00:09:36,960 --> 00:09:38,500 Vì vậy, tôi có thể thử lại trung tâm đó. 200 00:09:38,500 --> 00:09:42,100 May mắn thay nó cung cấp các hướng dẫn để làm cho mọi việc dễ dàng hơn nhiều. 201 00:09:42,100 --> 00:09:44,130 Tôi sẽ cố gắng để biên dịch nó. 202 00:09:44,130 --> 00:09:46,570 Hy vọng rằng nó sẽ thực sự làm việc ở đây. 203 00:09:46,570 --> 00:09:52,870 Và nếu không, chỉ trong một khoảnh khắc trong thực tế, nó sẽ xuất hiện trên iPad của tôi. 204 00:09:52,870 --> 00:09:54,360 Nó ở ngay đây. 205 00:09:54,360 --> 00:09:55,060 Có nó là. 206 00:09:55,060 --> 00:09:56,590 >> OK, vì vậy đó là nó. 207 00:09:56,590 --> 00:09:57,160 Chúng tôi đang thực hiện. 208 00:09:57,160 --> 00:09:58,868 Chúng tôi đã tạo ra rất của chúng tôi Ứng dụng đầu tiên. 209 00:09:58,868 --> 00:10:01,330 Bây giờ rõ ràng là điều này không làm bất cứ điều gì. 210 00:10:01,330 --> 00:10:02,280 Nó chỉ là một nhãn. 211 00:10:02,280 --> 00:10:07,350 Không có kết nối giữa giao diện người dùng và các mã. 212 00:10:07,350 --> 00:10:10,130 Vì vậy, nếu chúng ta thực sự muốn để tạo ra các kết nối này, 213 00:10:10,130 --> 00:10:14,790 nếu chúng ta thực sự muốn có một số loại thông tin liên lạc giữa các yếu tố 214 00:10:14,790 --> 00:10:17,540 tồn tại trên màn hình và mã số đó 215 00:10:17,540 --> 00:10:19,810 cho phép chúng ta kiểm soát những yếu tố, sau đó 216 00:10:19,810 --> 00:10:23,570 chúng tôi thực sự cần nhìn vào bản thân mã. 217 00:10:23,570 --> 00:10:27,000 >> Vì vậy, đây là những gì được gọi là ViewController.swift. 218 00:10:27,000 --> 00:10:30,080 Và đối, đặc biệt là đối với vài chương trình đầu tiên của bạn, 219 00:10:30,080 --> 00:10:33,120 này là có được sắp xếp của phần lớn các mã mà bạn enter-- 220 00:10:33,120 --> 00:10:35,980 là có được trong tài liệu này ở đây. 221 00:10:35,980 --> 00:10:38,390 Có rất nhiều thứ đó là ở đây cho đến nay, phải không? 222 00:10:38,390 --> 00:10:42,660 Có giao diện người dùng nhập khẩu lớp kit, ghi đè lên, [? funk,?] tất cả những điều khác nhau. 223 00:10:42,660 --> 00:10:45,820 Và nó không hoàn toàn rõ ràng những gì nó là tất cả các phương tiện này. 224 00:10:45,820 --> 00:10:48,570 Vì vậy, hãy lùi lại một bước đi từ Xcode cho một chút 225 00:10:48,570 --> 00:10:52,420 và xem xét ngôn ngữ riêng của mình, nhanh chóng. 226 00:10:52,420 --> 00:10:56,370 >> Vì vậy, với nhanh chóng, đó là trong thiết kế và phát triển 227 00:10:56,370 --> 00:10:58,645 tại Apple trong khoảng bốn năm để hiểu biết của tôi. 228 00:10:58,645 --> 00:11:01,270 Và có một vài tính năng về nó mà là thực sự gọn gàng. 229 00:11:01,270 --> 00:11:03,910 Trước hết, nó được biên dịch ngôn ngữ, giống như C. 230 00:11:03,910 --> 00:11:06,120 Vì vậy, đầu tiên bạn phải biên dịch nó và sau đó chạy nó 231 00:11:06,120 --> 00:11:09,580 trước khi bạn có thể thực sự thực thi các mã có kết quả. 232 00:11:09,580 --> 00:11:14,250 Nhưng là, không giống như C, một tương tác nhắc nhở rằng bạn thực sự có thể chạy 233 00:11:14,250 --> 00:11:16,680 và gõ lệnh tùy vào. 234 00:11:16,680 --> 00:11:20,280 Và rất nhiều như một giao diện điều khiển JavaScript, mà bạn có thể quen với bây giờ, 235 00:11:20,280 --> 00:11:24,506 nó thực sự sẽ đánh giá những lệnh và cung cấp cho bạn sản lượng. 236 00:11:24,506 --> 00:11:26,380 Và họ đã thậm chí đưa đó để cấp độ tiếp theo 237 00:11:26,380 --> 00:11:29,100 và họ đã tạo ra một cái gì đó gọi là sân chơi trong Xcode 238 00:11:29,100 --> 00:11:31,720 cho phép bạn trực quan làm việc với mã. 239 00:11:31,720 --> 00:11:34,910 Và chúng ta sẽ thực sự nhìn thấy một số ví dụ điều đó chỉ trong một chút. 240 00:11:34,910 --> 00:11:41,680 Nó dựa trên nền tảng C C. nó, bởi vì tất cả các trình biên dịch 241 00:11:41,680 --> 00:11:46,820 tạo mã ra khỏi C và tạo mã đối tượng từ nó. 242 00:11:46,820 --> 00:11:49,240 Nhưng nó thực sự cổ phiếu tương đối ít cú pháp. 243 00:11:49,240 --> 00:11:50,721 Nó sẽ trông khá khác nhau. 244 00:11:50,721 --> 00:11:51,970 Sẽ có một số điểm tương đồng. 245 00:11:51,970 --> 00:11:54,140 Nhưng có sẽ được khá một vài sự khác biệt 246 00:11:54,140 --> 00:11:57,200 so với, nói, JavaScript hay PHP. 247 00:11:57,200 --> 00:11:59,070 Và chúng tôi sẽ chỉ cho các ra chỉ trong một khoảnh khắc. 248 00:11:59,070 --> 00:12:01,420 >> Bây giờ một trong những điều lớn nhất về nhanh chóng đó là tốt đẹp 249 00:12:01,420 --> 00:12:05,650 là, đặc biệt là so C, nó có nghĩa là để được an toàn. 250 00:12:05,650 --> 00:12:08,100 Tất cả mọi thứ trong đó là có nghĩa là để được đánh máy rất mạnh mẽ trong. 251 00:12:08,100 --> 00:12:10,780 Trong thực tế, nó là gần như khó chịu Lúc đầu, khi bạn lần đầu tiên 252 00:12:10,780 --> 00:12:15,610 bắt đầu làm việc với nhanh chóng, chỉ cần như thế nào nhiều chính quyền áp dụng các loại ở khắp mọi nơi. 253 00:12:15,610 --> 00:12:17,860 Bất cứ điều gì đó là một chuỗi phải duy trì một chuỗi. 254 00:12:17,860 --> 00:12:22,100 Nó rất khó để sắp xếp của chuyển đổi nó hoặc ép buộc nó vào một số hình thức khác. 255 00:12:22,100 --> 00:12:23,800 >> Và một lần nữa, chúng ta sẽ thấy những ví dụ về điều này. 256 00:12:23,800 --> 00:12:26,830 Nhưng cuối cùng nhận ra rằng này là có nghĩa là để bảo vệ bạn, 257 00:12:26,830 --> 00:12:32,010 và bởi bạn tôi có nghĩa là mã của bạn, từ đâm vào một cách khủng khiếp khi 258 00:12:32,010 --> 00:12:34,330 bạn có một số loại loại không phù hợp. 259 00:12:34,330 --> 00:12:36,040 Và một lần nữa, làm việc với nó. 260 00:12:36,040 --> 00:12:40,210 Bởi vì nó sẽ là bực bội ở đầu tiên như bạn cố gắng tìm ra lý do tại sao chính xác 261 00:12:40,210 --> 00:12:43,070 bạn đang nhận được bất thường này lỗi đối phó với các loại. 262 00:12:43,070 --> 00:12:45,350 Nhưng nó sẽ được giá trị nó cuối cùng. 263 00:12:45,350 --> 00:12:47,267 >> Nó đối phó với tự động quản lý bộ nhớ, 264 00:12:47,267 --> 00:12:49,100 nên không còn làm bạn phải đối phó với những điều 265 00:12:49,100 --> 00:12:51,400 như malloc và miễn phí và tất cả các loại vật. 266 00:12:51,400 --> 00:12:53,066 Và nó cũng được thiết kế để chỉ nói chung chung. 267 00:12:53,066 --> 00:12:58,360 Vì vậy, trong khi chúng ta có thể sử dụng một Xcode để tạo ra các ứng dụng iOS và các ứng dụng Mac, 268 00:12:58,360 --> 00:13:00,380 chúng ta cũng có thể chỉ cần sử dụng nó như là một ngôn ngữ kịch bản. 269 00:13:00,380 --> 00:13:03,660 Và vì vậy chúng tôi có thể sử dụng nó loại thay vì của PHP hoặc thay 270 00:13:03,660 --> 00:13:07,800 của Python để thực sự nhanh chóng phân tích và quá trình 271 00:13:07,800 --> 00:13:09,800 một số dữ liệu mà chúng tôi có trên máy tính của chúng tôi. 272 00:13:09,800 --> 00:13:13,290 >> Nó có một loạt các hiện đại tính năng, optionals, đột biến, 273 00:13:13,290 --> 00:13:17,900 generics, đóng cửa, và rất nhiều này những thứ bạn có thể hoặc không thể nhận ra. 274 00:13:17,900 --> 00:13:22,810 Và nó chỉ là một loại bất hạnh một phần của ngôn ngữ mà một số trong những 275 00:13:22,810 --> 00:13:26,700 loại tương lai, các yếu tố hiện đại được chứa trong các yếu tố này 276 00:13:26,700 --> 00:13:34,520 quá sâu thâm căn cố đế mà tôi thực sự sẽ phải dạy bạn CS50.5 một chút. 277 00:13:34,520 --> 00:13:37,305 >> Chúng ta phải tìm hiểu một chút ít hơn về một số tính năng trong trật tự 278 00:13:37,305 --> 00:13:40,180 để thực sự hiểu những gì đang xảy ra trên và do đó bạn có thể nhìn vào mã 279 00:13:40,180 --> 00:13:42,450 và không cảm thấy hoàn toàn bị mất. 280 00:13:42,450 --> 00:13:44,820 Và bạn sẽ thấy những gì tôi có ý nghĩa bởi điều đó chỉ trong một phút. 281 00:13:44,820 --> 00:13:47,830 OK, vì vậy let's-- đủ rồi loại công cụ lý thuyết. 282 00:13:47,830 --> 00:13:52,450 Hãy nhìn vào thực tế của chúng tôi Chương trình nhanh chóng đầu tiên. 283 00:13:52,450 --> 00:13:53,590 Đó là một dòng mã. 284 00:13:53,590 --> 00:13:57,690 Line 14 ngay tại đây, nó nói in l n chào CS50. 285 00:13:57,690 --> 00:14:01,160 >> Vì vậy, có một vài điều đó rất khác nhau về điều này so 286 00:14:01,160 --> 00:14:04,140 đến những điều mà bạn có thể có sử dụng từ C, ví dụ. 287 00:14:04,140 --> 00:14:08,390 Một trong số đó là không có intmain, không bao gồm phần, 288 00:14:08,390 --> 00:14:10,790 có không có thêm các công cụ này. 289 00:14:10,790 --> 00:14:13,790 Bao gồm, như tiêu chuẩn I / O, như các thư viện 290 00:14:13,790 --> 00:14:16,580 mà thực sự cung cấp năng cơ bản của ngôn ngữ, 291 00:14:16,580 --> 00:14:19,180 sẽ tự động được bao gồm như là một phần của thư viện chuẩn nhanh chóng của 292 00:14:19,180 --> 00:14:20,680 và có thể tự động nhập khẩu. 293 00:14:20,680 --> 00:14:23,740 Bạn không cần phải làm mà nhập bằng tay. 294 00:14:23,740 --> 00:14:27,360 >> Intmain không tồn tại bởi vì điểm vào chính cho các mã 295 00:14:27,360 --> 00:14:29,470 là thực tại bắt đầu của mã. 296 00:14:29,470 --> 00:14:32,000 Vì vậy, bất kỳ mã mà bạn có bắt đầu từ đầu 297 00:14:32,000 --> 00:14:34,940 sẽ thực sự được thực hiện vào lúc bắt đầu. 298 00:14:34,940 --> 00:14:36,520 Vì vậy, đây thực sự đơn giản hóa rất nhiều. 299 00:14:36,520 --> 00:14:38,470 Cũng nhận thấy, rằng không có dấu chấm phẩy. 300 00:14:38,470 --> 00:14:41,040 Không có dấu chấm phẩy trong ngôn ngữ này. 301 00:14:41,040 --> 00:14:43,261 Bạn đặt một tuyên bố trên một dòng riêng lẻ 302 00:14:43,261 --> 00:14:45,510 và sau đó các dòng tiếp theo đại diện các báo cáo khác. 303 00:14:45,510 --> 00:14:47,420 Nếu bạn muốn đặt báo cáo mulitiple trực tuyến, 304 00:14:47,420 --> 00:14:49,086 sau đó bạn phải tách nó bằng dấu chấm phẩy. 305 00:14:49,086 --> 00:14:50,940 Nhưng đối với hầu hết các phần, cho phong cách tốt, chúng tôi 306 00:14:50,940 --> 00:14:56,530 sẽ không bao giờ nhìn thấy các dấu chấm phẩy cho mục đích của báo cáo tách 307 00:14:56,530 --> 00:14:58,420 trong nhanh chóng. 308 00:14:58,420 --> 00:14:59,820 Vậy làm thế nào thực hiện điều này thực sự làm việc? 309 00:14:59,820 --> 00:15:04,080 Vâng rất giống C chúng tôi thực sự cần phải biên dịch này. 310 00:15:04,080 --> 00:15:10,640 Và vì vậy chúng tôi có thể làm điều đó bằng cách sử dụng nhanh chóng c và sau đó 1.swift. 311 00:15:10,640 --> 00:15:13,850 Và sau đó sau một vài phút này sẽ biên dịch 312 00:15:13,850 --> 00:15:16,340 và sau đó tôi có thể chạy một item. 313 00:15:16,340 --> 00:15:19,691 Và hơn nó chỉ sẽ nói "Xin chào CS50." 314 00:15:19,691 --> 00:15:20,690 Awesome, do đó chúng tôi đi. 315 00:15:20,690 --> 00:15:22,273 Có chương trình hello thế giới đầu tiên của chúng tôi. 316 00:15:22,273 --> 00:15:24,790 Hãy chuyển sang số hai. 317 00:15:24,790 --> 00:15:30,450 >> Bây giờ trong this-- này đã thay đổi hơi, bởi vì trong khi thông thường bạn 318 00:15:30,450 --> 00:15:34,720 do-- trong thực tế luôn luôn làm bạn phải biên dịch một ứng dụng nhanh chóng trước khi bạn 319 00:15:34,720 --> 00:15:37,180 thực sự chạy một it-- trong những tính năng tuyệt vời 320 00:15:37,180 --> 00:15:40,230 mà tôi đã đề cập đến trước khi được rằng nhanh chóng thực sự có thể được sử dụng trong các loại 321 00:15:40,230 --> 00:15:43,390 của một chế độ giả diễn giải, có trong thực tế, như một thông dịch viên. 322 00:15:43,390 --> 00:15:46,690 Nhưng điều này sẽ làm là có là, trên thực tế, một ứng dụng nhanh chóng 323 00:15:46,690 --> 00:15:47,520 mà bạn có thể chạy. 324 00:15:47,520 --> 00:15:51,050 >> Vì vậy, ví dụ nếu bạn chỉ cần gõ nhanh chóng ở đây, điều gì sẽ xảy ra 325 00:15:51,050 --> 00:15:52,330 là bạn sẽ nhận được một nhắc nhở. 326 00:15:52,330 --> 00:15:59,040 Và bạn có thể gõ nhanh chóng của bạn code, in hello, và chạy nó. 327 00:15:59,040 --> 00:16:01,867 Và nó sẽ thực sự print-- tốt, nó không được in trong trường hợp này 328 00:16:01,867 --> 00:16:04,450 bởi vì nó được in để làm trung tâm ra, đó là không thể nhìn thấy ở đây. 329 00:16:04,450 --> 00:16:06,660 Nhưng nó thực sự có thể hoạt động. 330 00:16:06,660 --> 00:16:09,580 Và như vậy trong trường hợp này, tôi chỉ sẽ sử dụng điều này như một kịch bản. 331 00:16:09,580 --> 00:16:11,259 Và tôi thực sự có thể chạy mã này ở đó. 332 00:16:11,259 --> 00:16:13,800 Vì vậy, cách mà tôi thực sự chạy nó sẽ hơi khác nhau, 333 00:16:13,800 --> 00:16:15,710 nhưng bạn sẽ thấy rằng chỉ trong một khoảnh khắc. 334 00:16:15,710 --> 00:16:18,890 Bây giờ, trong trường hợp này những gì chúng ta đang đi làm là đầu tiên xác định một biến. 335 00:16:18,890 --> 00:16:22,160 Vì vậy, đây là cách chúng ta định nghĩa một biến trong nhanh chóng, 336 00:16:22,160 --> 00:16:25,900 được chúng tôi sử dụng các từ khóa let, tiếp bởi tên của biến, 337 00:16:25,900 --> 00:16:29,280 và sau đó chúng tôi cung cấp một số khởi tạo dữ liệu tùy chọn. 338 00:16:29,280 --> 00:16:34,660 Vì vậy, trường hợp này chúng tôi đang xác định một hằng số gọi tên, 339 00:16:34,660 --> 00:16:37,775 và chúng ta sẽ sử dụng trong đầu ra của dòng in của chúng tôi 340 00:16:37,775 --> 00:16:39,590 ở rất dưới, hello tên. 341 00:16:39,590 --> 00:16:43,260 >> Bây giờ để ý rằng, thay vì sử dụng% s, chúng ta có thể gói gọn tên này 342 00:16:43,260 --> 00:16:49,960 biến trong / () và có thể tiếp nhau trong nội dung này 343 00:16:49,960 --> 00:16:51,790 chuỗi thành chuỗi này. 344 00:16:51,790 --> 00:16:56,510 Bây giờ không giống như C, chuỗi là một loại thực thực tế nhanh chóng. 345 00:16:56,510 --> 00:16:59,240 Và do đó, nó ngồi bên cạnh ints và dọc 346 00:16:59,240 --> 00:17:02,220 tăng gấp đôi rất dễ dàng và tự nhiên so 347 00:17:02,220 --> 00:17:05,450 để một số khác ngôn ngữ mà chúng ta đã thấy. 348 00:17:05,450 --> 00:17:07,980 Vì vậy, đây sẽ thực sự hoạt động giống như bạn mong đợi. 349 00:17:07,980 --> 00:17:10,540 >> Tôi có thể chạy 2.swift. 350 00:17:10,540 --> 00:17:14,390 Và chúng ta thấy rằng tên của tôi là thực sự ghép trong, "Hello Dan." 351 00:17:14,390 --> 00:17:16,050 OK, tuyệt vời. 352 00:17:16,050 --> 00:17:17,485 Chuyển sang số ba. 353 00:17:17,485 --> 00:17:19,359 Bây giờ nó là một chút một lời nói dối trắng mà tôi 354 00:17:19,359 --> 00:17:23,369 nói rằng cách mà chúng ta khai báo biến là sử dụng các từ khóa cho phép. 355 00:17:23,369 --> 00:17:27,640 Như nhiều lần như bạn có thể bạn có thể làm muốn sử dụng để cho, vì những gì mà thực hiện 356 00:17:27,640 --> 00:17:29,280 là nó định nghĩa một hằng số. 357 00:17:29,280 --> 00:17:33,010 Và đó nói rằng nó có thể nhanh chóng tối ưu hóa tốc độ của ứng dụng của bạn 358 00:17:33,010 --> 00:17:36,230 bởi vì nó biết rằng đó biến sẽ không thay đổi. 359 00:17:36,230 --> 00:17:38,760 >> Vì vậy, đánh giá một cách cẩn thận khi bạn đang sử dụng 360 00:17:38,760 --> 00:17:41,382 một biến cho mục đích của việc thay đổi nó. 361 00:17:41,382 --> 00:17:43,340 Và khi bạn đang đi tới tạo ra một biến chỉ 362 00:17:43,340 --> 00:17:47,010 để giữ một số dữ liệu và đó là không thực sự sẽ thay đổi. 363 00:17:47,010 --> 00:17:50,150 Vì vậy, khái niệm này về tính bất biến, nó không thực sự sẽ thay đổi, 364 00:17:50,150 --> 00:17:53,740 là một trong những quan trọng ngay cả khi xa xuống như định nghĩa các biến. 365 00:17:53,740 --> 00:17:56,870 Vì vậy, ở đây chúng tôi đã xác định một tên, cho tên, và trong trường hợp này 366 00:17:56,870 --> 00:18:02,120 nó là một hằng số, đó là loại chuỗi, và nó là bằng với Dan. 367 00:18:02,120 --> 00:18:05,580 >> Vì vậy, trong khi ở trước phiên bản, nó infers-- và bởi "nó" 368 00:18:05,580 --> 00:18:08,220 Tôi có nghĩa là nhanh chóng swift-- suy luận kiểu dữ liệu 369 00:18:08,220 --> 00:18:10,850 rằng chúng tôi đã nhập vào các biến. 370 00:18:10,850 --> 00:18:12,930 Trong trường hợp này, chúng ta có thể rõ ràng. 371 00:18:12,930 --> 00:18:17,590 Vì vậy, hãy để sau đó tên này biến là tên, sau đó một tràng. 372 00:18:17,590 --> 00:18:21,350 Và sau dấu hai chấm làm chúng tôi xác định các loại dữ liệu. 373 00:18:21,350 --> 00:18:24,694 Vì vậy, không còn là nó int tên hoặc Tên chuỗi hoặc một cái gì đó như thế. 374 00:18:24,694 --> 00:18:26,860 Nhưng thay vì để cho nhãn, chúng tôi xác định có hay không 375 00:18:26,860 --> 00:18:29,090 nó không đổi hoặc biến, theo sau bởi tên, 376 00:18:29,090 --> 00:18:31,870 tiếp theo là các loại tùy chọn. 377 00:18:31,870 --> 00:18:34,730 >> Vì vậy, trong trường hợp này chúng tôi đang xác định Tên này là một chuỗi. 378 00:18:34,730 --> 00:18:35,790 Chúng tôi đang nói là Dan. 379 00:18:35,790 --> 00:18:39,270 Và bây giờ tôi có một biến khác, trong trường hợp này nó được gọi là nhãn. 380 00:18:39,270 --> 00:18:42,090 Nhưng chú ý rằng nó là bắt đầu bằng từ khóa var. 381 00:18:42,090 --> 00:18:44,430 Các phương tiện từ khóa var rằng biến này có thể 382 00:18:44,430 --> 00:18:48,720 được thay đổi tại một điểm sau trong thời gian, ở đâu đó xuống trong mã 383 00:18:48,720 --> 00:18:52,480 chúng ta có thể thực sự thay đổi đó và nó sẽ không cung cấp cho chúng tôi bất kỳ lỗi nào. 384 00:18:52,480 --> 00:18:56,760 >> Chúng tôi có thể làm Kết nối chuẩn nhà điều hành ở đây bằng cách sử dụng dấu cộng 385 00:18:56,760 --> 00:19:00,130 để thực sự thêm của chúng tôi tên thành chuỗi này. 386 00:19:00,130 --> 00:19:02,921 Và sau đó chúng ta có thể in ra như chúng ta đã thấy chỉ một thời gian trước đây. 387 00:19:02,921 --> 00:19:04,920 Bây giờ chúng ta hãy nói rằng bạn muốn tạo ra một biến 388 00:19:04,920 --> 00:19:06,586 nhưng bạn không muốn khởi tạo nó chưa. 389 00:19:06,586 --> 00:19:08,590 Bạn chưa muốn đặt bất kỳ dữ liệu bên trong nó. 390 00:19:08,590 --> 00:19:11,760 Vâng, bạn phải nói nhanh chóng những gì các loại dữ liệu 391 00:19:11,760 --> 00:19:16,430 là có được trước khi bạn có thể thực sự xác định nó đúng. 392 00:19:16,430 --> 00:19:20,360 >> Vì vậy, trong trường hợp này, khi chúng ta đã xác định một biến gọi là lớp chúng ta phải 393 00:19:20,360 --> 00:19:24,450 rõ ràng về loại hình của nó, bởi vì nó không thể suy ra chỉ là tìm kiếm 394 00:19:24,450 --> 00:19:27,300 các dữ liệu khởi tạo mà bạn cung cấp cho nó. 395 00:19:27,300 --> 00:19:30,050 Nó sẽ cung cấp cho chúng tôi một lỗi nếu bạn chỉ loại var lớp, ví dụ, 396 00:19:30,050 --> 00:19:31,830 bởi vì nó không có loại do. 397 00:19:31,830 --> 00:19:33,353 Vì vậy, lớp = 100. 398 00:19:33,353 --> 00:19:35,790 Vì vậy, 100 là một số nguyên, nó phù hợp rất độc đáo vào đó. 399 00:19:35,790 --> 00:19:36,998 Nó sẽ tiếp tục hoạt động. 400 00:19:36,998 --> 00:19:40,350 401 00:19:40,350 --> 00:19:43,022 Chúng ta có thể xem như thế nào thì chúng ta có thể nối này. 402 00:19:43,022 --> 00:19:44,730 Bây giờ bạn có thể cám dỗ, nếu bạn thực sự 403 00:19:44,730 --> 00:19:48,610 muốn ghép các lớp vào một chuỗi văn bản, 404 00:19:48,610 --> 00:19:52,560 thành chuỗi khác, mà bạn sẽ chỉ sử dụng mà nhà điều hành Kết nối cùng. 405 00:19:52,560 --> 00:19:54,630 Và đó thường sẽ là sự thật. 406 00:19:54,630 --> 00:20:00,540 Nhưng nhanh chóng sẽ không cho phép bạn ngầm thay đổi các kiểu dữ liệu. 407 00:20:00,540 --> 00:20:03,440 Vì vậy, trong trường hợp này, điều này dòng, 25 tuổi, sẽ thất bại 408 00:20:03,440 --> 00:20:06,650 vì lớp là một số nguyên và không phải là một chuỗi. 409 00:20:06,650 --> 00:20:08,760 Và do đó, có một không phù hợp đặt các loại. 410 00:20:08,760 --> 00:20:11,780 Vì vậy, bạn phải rõ ràng khi bạn muốn thay đổi dữ liệu này, 411 00:20:11,780 --> 00:20:14,080 khi bạn muốn ép buộc này dữ liệu vào một loại khác nhau 412 00:20:14,080 --> 00:20:17,250 và nói, OK, tôi muốn để mất lớp này, đó là một số nguyên, 413 00:20:17,250 --> 00:20:19,050 và chuyển đổi nó thành một chuỗi. 414 00:20:19,050 --> 00:20:23,970 >> Vì vậy, tôi mất String một vốn của tất cả các loại, bạn sẽ nhận thấy, là hoa, 415 00:20:23,970 --> 00:20:26,280 Int, Double, String, vv và vv. 416 00:20:26,280 --> 00:20:28,930 Tất cả đều là vốn chỉ để làm cho mọi việc dễ dàng hơn. 417 00:20:28,930 --> 00:20:32,240 Và chúng ta sẽ nói tận Chuỗi truyền vào nó lớp. 418 00:20:32,240 --> 00:20:35,020 Và nó sẽ tạo ra một chuỗi ra số nguyên đó. 419 00:20:35,020 --> 00:20:37,970 Và sau đó chúng ta có thể tiếp nhau hai rất độc đáo. 420 00:20:37,970 --> 00:20:40,500 Mọi thắc mắc về công cụ này cho đến nay? 421 00:20:40,500 --> 00:20:43,770 Được rồi, chúng ta hãy cày thông qua vị trí thứ tư. 422 00:20:43,770 --> 00:20:47,870 >> Bây giờ chúng ta hãy nói về một số tiên tiến hơn cấu trúc, như mảng và vòng lặp. 423 00:20:47,870 --> 00:20:54,920 Và không giống như C, mảng trong nhanh chóng không được đại diện bởi con trỏ. 424 00:20:54,920 --> 00:20:58,730 Con trỏ trong nhanh chóng, mặc dù chúng tồn tại, được gọi là 425 00:20:58,730 --> 00:21:02,840 như con trỏ không an toàn hoặc một số loại tương tự như thế này, 426 00:21:02,840 --> 00:21:04,950 họ không tiếp xúc với bạn thông thường. 427 00:21:04,950 --> 00:21:07,300 Vì vậy, nó trở nên rất khó khăn cho bạn thao tác 428 00:21:07,300 --> 00:21:10,020 bộ nhớ trực tiếp của máy tính của bạn. 429 00:21:10,020 --> 00:21:11,670 >> Vì vậy, các mảng chỉ là một kiểu dữ liệu. 430 00:21:11,670 --> 00:21:16,830 Và họ đang tham chiếu sử dụng loại này ký hiệu khung của bây giờ chuẩn vuông 431 00:21:16,830 --> 00:21:18,280 mà bạn đã nhìn thấy trước. 432 00:21:18,280 --> 00:21:21,130 Nhưng khi bạn thực sự muốn định nghĩa một kiểu của một biến 433 00:21:21,130 --> 00:21:24,330 như là một mảng của một số loại đặc biệt, sau đó bạn 434 00:21:24,330 --> 00:21:27,150 đặt kiểu trong dấu ngoặc vuông. 435 00:21:27,150 --> 00:21:30,260 Vì vậy, những gì tôi đang nói ở đây là Tôi đang tạo ra một biến gọi là 436 00:21:30,260 --> 00:21:33,930 lớp của kiểu int array. 437 00:21:33,930 --> 00:21:37,380 Và tôi đang thiết rằng bằng một số dữ liệu được khởi tạo, mà trong trường hợp này 438 00:21:37,380 --> 00:21:42,960 là 100, 0, 90, 85, mà chỉ là một bộ sưu tập của lớp tùy ý ở đây. 439 00:21:42,960 --> 00:21:46,480 Bây giờ trong trường hợp này tôi có thể, nhớ, loại bỏ các loại, 440 00:21:46,480 --> 00:21:49,580 và nó sẽ có thể suy ra nó dựa trên các dữ liệu khởi tạo. 441 00:21:49,580 --> 00:21:51,990 Nhưng nếu tôi loại bỏ điều này và Tôi cần thiết để cài đặt nó sau này, 442 00:21:51,990 --> 00:21:56,840 sau đó tôi sẽ phải chắc chắn rằng tôi có các loại đó. 443 00:21:56,840 --> 00:21:58,750 Được rồi, chúng ta hãy di chuyển dọc. 444 00:21:58,750 --> 00:22:03,010 Vì vậy, chúng tôi can-- mảng cung cấp cho chúng tôi một loạt 445 00:22:03,010 --> 00:22:07,130 các phương pháp thông qua đó ký hiệu dấu chấm tại bạn có lẽ quen thuộc với. 446 00:22:07,130 --> 00:22:10,360 Vì vậy grades.count, ví dụ, cho chúng ta biết chính xác số lượng 447 00:22:10,360 --> 00:22:13,680 của các yếu tố đó là chứa trong mảng này. 448 00:22:13,680 --> 00:22:17,260 >> Nếu tôi muốn thêm additional-- giờ nhận thấy rằng đây là một var 449 00:22:17,260 --> 00:22:20,140 và not-- này là một biến và không phải là một hằng số, mà 450 00:22:20,140 --> 00:22:24,410 có nghĩa là tôi có thể thay đổi nội dung của mảng này, tôi có thể thêm các đối tượng để nó. 451 00:22:24,410 --> 00:22:28,870 Nhưng tôi không thể chỉ nói lớp và sau đó trong dấu ngoặc vuông 452 00:22:28,870 --> 00:22:33,280 bốn, vì đó sẽ là một ngoài giới hạn lỗi trong trường hợp này. 453 00:22:33,280 --> 00:22:36,190 Nếu tôi muốn thực sự thay đổi kích thước của mảng này, 454 00:22:36,190 --> 00:22:41,140 Tôi phải sử dụng phương pháp chấm append để thêm một cái gì đó trên cho đến cuối cùng của nó. 455 00:22:41,140 --> 00:22:46,900 Tôi có thể, tuy nhiên, sự thay đổi chỉ số cá nhân. 456 00:22:46,900 --> 00:22:48,920 >> Vì vậy, tôi có thể sử dụng lớp và sau đó ngoặc vuông 457 00:22:48,920 --> 00:22:52,480 zero để thao tác đầu tiên chỉ số này và như vậy, như bạn thường mong đợi. 458 00:22:52,480 --> 00:22:56,530 Và tôi có thể làm tương tự để thực sự nhận dữ liệu từ đó là tốt. 459 00:22:56,530 --> 00:23:00,420 Bây giờ cũng có loại một phương pháp ưa thích để làm điều này, cộng với lớp equals 460 00:23:00,420 --> 00:23:02,525 và sau đó chỉ số khác, mà sẽ append-- 461 00:23:02,525 --> 00:23:04,400 hoặc không khác index-- nhưng một danh sách khác 462 00:23:04,400 --> 00:23:07,340 sẽ nối danh sách đó để sau của lớp. 463 00:23:07,340 --> 00:23:09,780 Và các lớp sẽ sau đó chứa tất cả. 464 00:23:09,780 --> 00:23:13,850 Nhưng đó là sắp xếp của một điều thêm rằng tôi chỉ hiển thị cho bạn cho vui. 465 00:23:13,850 --> 00:23:14,910 >> Bây giờ có một vòng lặp for. 466 00:23:14,910 --> 00:23:18,970 Và đây là sự bắt đầu của nơi mọi thứ bắt đầu thay đổi một chút. 467 00:23:18,970 --> 00:23:22,920 Chú ý này cho vòng lặp là khác nhau từ các vòng trong C. 468 00:23:22,920 --> 00:23:26,470 Bây giờ tôi sẽ lưu ý cho vòng trong Swift thể 469 00:23:26,470 --> 00:23:30,650 được làm cho giống như vòng lặp for trong C, nhưng có rất nhiều cấu trúc hữu ích hơn 470 00:23:30,650 --> 00:23:37,840 mà về cơ bản loại bỏ sự cần thiết để có cho var i bằng 0 dấu chấm phẩy i 471 00:23:37,840 --> 00:23:40,340 là ít hơn so với một số chiều dài, vv và vv, phải không? 472 00:23:40,340 --> 00:23:42,940 Và xây dựng này chỉ là một trong số họ. 473 00:23:42,940 --> 00:23:49,030 >> Đối với chỉ số, chỉ số mới biến, trong trường hợp này, trong phạm vi. 474 00:23:49,030 --> 00:23:52,730 Và những gì tôi đang nói là có một phạm vi từ 0 thì tất cả các con đường lên đến 475 00:23:52,730 --> 00:23:55,870 nhưng không bao gồm grades.count. 476 00:23:55,870 --> 00:23:58,470 Vì vậy, dấu chấm này chấm ít hơn dấu hiệu đại diện 477 00:23:58,470 --> 00:24:05,040 một loạt các giá trị bắt đầu từ con số không tất cả các con đường lên đến grades.count trừ đi 1. 478 00:24:05,040 --> 00:24:07,070 Có một riêng biệt điều hành tồn tại, 479 00:24:07,070 --> 00:24:13,320 đó là dot dot dot, mà sẽ có nghĩa là tôi muốn phạm của zero 480 00:24:13,320 --> 00:24:16,310 đến lớp tính toàn diện. 481 00:24:16,310 --> 00:24:19,130 >> Nhưng trong trường hợp này, bởi vì những mảng là chỉ số không, chúng tôi tất nhiên 482 00:24:19,130 --> 00:24:23,290 không muốn đi đến số lượng tối đa của lớp. 483 00:24:23,290 --> 00:24:26,390 Tôi có thể tổng hợp các lớp, như bạn có thể mong đợi, và tất cả các đầu ra của công cụ này. 484 00:24:26,390 --> 00:24:29,620 OK, di chuyển trên. 485 00:24:29,620 --> 00:24:32,270 Bây giờ chúng ta hãy nói về chức năng. 486 00:24:32,270 --> 00:24:35,465 Để xác định một chức năng bạn sử dụng các từ khóa funk. 487 00:24:35,465 --> 00:24:38,090 Và một lần nữa, trong Swift bạn phải rất cẩn thận với các loại. 488 00:24:38,090 --> 00:24:41,530 Bạn cung cấp cho nó các tham số bằng cách xác định, ví dụ, 489 00:24:41,530 --> 00:24:45,440 tên của các tham số và sau đó trong colin, các kiểu dữ liệu 490 00:24:45,440 --> 00:24:47,690 mà bạn mong đợi đó tham số để chấp nhận. 491 00:24:47,690 --> 00:24:50,700 >> Vì vậy, trong trường hợp này chúng ta có một chức năng gọi số in lớp. 492 00:24:50,700 --> 00:24:54,630 Nó chấp nhận một biến gọi là bảng điểm, hay đúng hơn một tham số gọi là bảng điểm. 493 00:24:54,630 --> 00:24:59,267 Và chúng tôi đang mong đợi bảng điểm đó là một mảng các số nguyên. 494 00:24:59,267 --> 00:25:01,350 Nếu bảng điểm đó là trống rỗng, chúng tôi sẽ in một điều. 495 00:25:01,350 --> 00:25:06,090 Nếu không chúng ta sẽ in ra số của lớp rằng điều này thực sự có. 496 00:25:06,090 --> 00:25:09,470 >> Bây giờ nếu chúng ta muốn trở lại một số giá trị, sau đó là cách 497 00:25:09,470 --> 00:25:14,595 rằng chúng ta sửa đổi định nghĩa này là để thực sự sử dụng từ khóa mũi tên này, 498 00:25:14,595 --> 00:25:16,870 hoặc sử dụng mũi tên này signifier. 499 00:25:16,870 --> 00:25:19,440 Vì vậy, ở đây chúng ta sẽ xác định một chức năng gọi là trung bình. 500 00:25:19,440 --> 00:25:21,940 Chúng ta sẽ phải chấp nhận một danh sách các số. 501 00:25:21,940 --> 00:25:25,430 Và chúng ta sẽ quay trở lại một đôi, mà sẽ hy vọng 502 00:25:25,430 --> 00:25:31,270 là mức trung bình của mảng này. 503 00:25:31,270 --> 00:25:34,570 Và để làm được điều đó, theo thứ tự để thực sự tính toán trung bình này, 504 00:25:34,570 --> 00:25:38,651 chúng ta sẽ mất một khoản tiền và chúng tôi sẽ về Tất nhiên tổng hợp tất cả các đối tượng 505 00:25:38,651 --> 00:25:39,400 trong mảng này. 506 00:25:39,400 --> 00:25:41,480 >> Chú ý rằng có một mới phong cách cho vòng lặp ở đây. 507 00:25:41,480 --> 00:25:45,450 Chúng tôi không cần phải được rõ ràng về lặp qua tất cả các yếu tố duy nhất, 508 00:25:45,450 --> 00:25:48,280 nhưng chúng ta có thể thay vì nói cho cấp và bảng điểm, ý nghĩa 509 00:25:48,280 --> 00:25:50,930 rằng đối với mỗi đơn mục mà chúng tôi có trong này, 510 00:25:50,930 --> 00:25:53,482 cung cấp các mặt hàng mà trong này biến được gọi là lớp. 511 00:25:53,482 --> 00:25:54,940 Và tôi muốn làm một cái gì đó với nó. 512 00:25:54,940 --> 00:26:00,350 Vì vậy, tôi sẽ tổng hợp tất cả các dữ liệu này và thực sự trở lại sự phân chia đôi. 513 00:26:00,350 --> 00:26:04,436 >> Bây giờ thấy một lần nữa ở đây có các Khái niệm về phân chia số nguyên trong Swift. 514 00:26:04,436 --> 00:26:06,810 Nếu bạn muốn tăng gấp đôi bộ phận bởi vì bạn muốn các số thập phân, 515 00:26:06,810 --> 00:26:09,460 sau đó bạn phải rõ ràng, không chỉ về một bên, 516 00:26:09,460 --> 00:26:14,030 bởi vì nó sẽ không cho phép bạn để ép buộc các dữ liệu ở hai bên này, 517 00:26:14,030 --> 00:26:17,030 bạn phải thực sự học cả hai bên vào đôi 518 00:26:17,030 --> 00:26:19,440 vì vậy mà bạn đang rất rõ ràng về việc bảo đảm 519 00:26:19,440 --> 00:26:23,370 rằng bạn đang làm phân đôi. 520 00:26:23,370 --> 00:26:26,150 >> Hãy di chuyển. 521 00:26:26,150 --> 00:26:31,150 Vì vậy, nếu tôi thực sự muốn accept-- như vậy trong ví dụ này, 522 00:26:31,150 --> 00:26:34,260 này vẫn còn là một câu lệnh dòng dựa trên ứng dụng. 523 00:26:34,260 --> 00:26:37,920 Và chúng ta đang bắt đầu thấy một số những hạn chế của ngôn ngữ trẻ 524 00:26:37,920 --> 00:26:41,850 trong đó mặc dù chúng ta có thể truy cập vào các đối số bằng cách sử dụng 525 00:26:41,850 --> 00:26:44,940 process.arguments này, đó là vẫn không nhất thiết phải sạch 526 00:26:44,940 --> 00:26:46,200 Điều mà chúng tôi từng thấy. 527 00:26:46,200 --> 00:26:49,142 Nhưng về cơ bản tôi khuyến khích bạn để loại nhìn vào mã này 528 00:26:49,142 --> 00:26:51,100 và cố gắng tìm ra chính xác những gì đang xảy ra. 529 00:26:51,100 --> 00:26:55,030 >> Về cơ bản những gì đang xảy ra là chúng ta đang dùng một danh sách các đối số 530 00:26:55,030 --> 00:26:57,610 và bị ép buộc chúng vào số nguyên, và sau đó chúng tôi 531 00:26:57,610 --> 00:27:03,620 sẽ sử dụng như là một cách để in ra trung bình của tất cả các lớp của chúng tôi. 532 00:27:03,620 --> 00:27:06,150 533 00:27:06,150 --> 00:27:07,350 Di chuyển trên. 534 00:27:07,350 --> 00:27:11,190 Bây giờ có một loại data-- nhập dữ liệu khác thay cho các mảng 535 00:27:11,190 --> 00:27:14,940 được gọi là từ điển, mà là rất tương tự như bảng băm hoặc bản đồ băm 536 00:27:14,940 --> 00:27:18,560 và tương tự cũng đến Mảng kết hợp PHP. 537 00:27:18,560 --> 00:27:20,770 Vì vậy, họ có khái niệm các khóa và giá trị. 538 00:27:20,770 --> 00:27:23,780 >> Và chúng được xác định cũng có ký hiệu này khung vuông, 539 00:27:23,780 --> 00:27:26,750 nhưng sự khác biệt là mà từ điển có 540 00:27:26,750 --> 00:27:29,370 bên trong của khung vuông, dấu hai chấm. 541 00:27:29,370 --> 00:27:33,850 Và đại tràng tách dữ liệu gõ đó là chìa khóa và giá trị. 542 00:27:33,850 --> 00:27:38,540 Vì vậy, trong trường hợp này, tôi sẽ tạo ra một từ điển để chấp nhận một số lớp. 543 00:27:38,540 --> 00:27:44,200 Và nó là có được kiểu chuỗi: int, 544 00:27:44,200 --> 00:27:46,940 điều đó có nghĩa rằng tất cả các phím đang có được chuỗi, 545 00:27:46,940 --> 00:27:53,080 và tất cả các giá trị của các phím sẽ là các số nguyên. 546 00:27:53,080 --> 00:27:55,780 >> Điều này có nghĩa là tôi có thể sau đó tham khảo các dữ liệu cụ thể 547 00:27:55,780 --> 00:28:00,490 mà tôi muốn sử dụng những phím thay so với sử dụng các chỉ số số như tôi 548 00:28:00,490 --> 00:28:04,350 sẽ có một mảng tiêu chuẩn. 549 00:28:04,350 --> 00:28:06,470 Bây giờ chúng ta hãy xem, có một điều quan trọng 550 00:28:06,470 --> 00:28:10,790 mà tôi cũng muốn đề cập về trình tự cụ thể mã này. 551 00:28:10,790 --> 00:28:12,910 Và đó là có một loại dữ liệu, 552 00:28:12,910 --> 00:28:15,580 hay đúng hơn là có này ý tưởng của dữ liệu đó là 553 00:28:15,580 --> 00:28:18,340 chứa trong Swift gọi optionals. 554 00:28:18,340 --> 00:28:21,270 >> Và những gì có nghĩa là optionals mà nó thừa nhận thực tế 555 00:28:21,270 --> 00:28:27,500 mà đôi khi bạn sẽ không có được các dữ liệu mà bạn thực sự mong đợi. 556 00:28:27,500 --> 00:28:31,400 Và vì vậy những gì tôi có ý nghĩa bởi đó is-- hãy hãy nhìn vào chuỗi mã này 557 00:28:31,400 --> 00:28:38,910 được lặp qua tất cả các đối số sẽ được thông qua vào mã này 558 00:28:38,910 --> 00:28:43,460 và cố gắng để chuyển đổi chúng, cố gắng chia thành nhiều chuỗi, 559 00:28:43,460 --> 00:28:47,310 vì nó chấp nhận một rất loại hình cụ thể của các đối số. 560 00:28:47,310 --> 00:28:51,530 Và sau đó nó sẽ cố gắng để ép buộc các chuỗi đại diện cho số 561 00:28:51,530 --> 00:28:55,460 thành các số nguyên đó là điểm số, mà tôi sau đó có thể tính toán. 562 00:28:55,460 --> 00:28:58,230 >> Vì vậy, về cơ bản tôi sẽ sử dụng chức năng phân chia này mà 563 00:28:58,230 --> 00:29:00,080 tồn tại trong Thư viện chuẩn Swift. 564 00:29:00,080 --> 00:29:03,720 Tôi sẽ đi vào nó chuỗi mà tôi muốn chia. 565 00:29:03,720 --> 00:29:06,980 Và sau đó trong việc sử dụng này loại cú pháp funky, mà 566 00:29:06,980 --> 00:29:09,670 Tôi không biết nếu chúng tôi sẽ để đến, nhưng có lẽ, chúng ta 567 00:29:09,670 --> 00:29:14,320 sẽ thực sự xác định chính xác nhân vật mà chúng tôi muốn chia tại. 568 00:29:14,320 --> 00:29:16,030 Vì vậy, điều này thực sự trông như thế nào? 569 00:29:16,030 --> 00:29:18,740 Chúng ta hãy nhìn vào thực sự chạy mã này. 570 00:29:18,740 --> 00:29:22,000 >> Vì vậy, ví dụ, chúng ta hãy nói rằng tôi có một bài kiểm tra và tôi đã nhận 50 về điều đó. 571 00:29:22,000 --> 00:29:23,960 Và tôi có một PSETs và Tôi có một trăm trên đó. 572 00:29:23,960 --> 00:29:29,180 Và tôi got-- có khác đố và tôi nhận được 40 trên đó. 573 00:29:29,180 --> 00:29:33,520 Tôi nhấn Enter, và cuối cùng là những gì sẽ xảy ra là nó đang làm gì 574 00:29:33,520 --> 00:29:37,730 đang đến với các thông số, tách các dây ở các dấu hai chấm, 575 00:29:37,730 --> 00:29:41,390 công nhận rằng có hai yếu tố trong mỗi một, 576 00:29:41,390 --> 00:29:43,700 và đó là cơ bản việc theo dõi của mỗi. 577 00:29:43,700 --> 00:29:49,226 >> Vì vậy, tôi có trong từ điển của tôi một bài kiểm tra, mà giá trị được đại diện bởi số 50, 578 00:29:49,226 --> 00:29:54,290 Tôi có một PSET có giá trị 100, và một bài kiểm tra trong đó có một giá trị là 40. 579 00:29:54,290 --> 00:29:57,400 Rồi sau này trong những mã tôi thực trung bình tất cả những giá trị 580 00:29:57,400 --> 00:30:01,160 và liệt kê tất cả các phím của mà điển đặc biệt. 581 00:30:01,160 --> 00:30:03,217 Nhưng điều này là quan trọng để bạn có thể nhận thấy 582 00:30:03,217 --> 00:30:06,050 những gì đang xảy ra, đó là những gì chúng tôi muốn làm là để có chuỗi này 583 00:30:06,050 --> 00:30:11,450 và chia nó ở nhân vật này, mà chúng ta có thể làm một lần nữa với phân chia này 584 00:30:11,450 --> 00:30:15,690 chức năng sử dụng loại này cú pháp thú vị mà tồn tại ở đây. 585 00:30:15,690 --> 00:30:17,880 >> Chỉ cần bây giờ giả định rằng đó là OK. 586 00:30:17,880 --> 00:30:19,980 Chúng tôi sẽ xem xét chi tiết tại đây chỉ trong một thời gian ngắn. 587 00:30:19,980 --> 00:30:23,230 Nhưng bây giờ có một thú vị khía cạnh mà chúng tôi thực sự 588 00:30:23,230 --> 00:30:27,250 muốn thử để chuyển đổi này chuỗi thành một số nguyên. 589 00:30:27,250 --> 00:30:29,720 Nhưng trong ngôn ngữ khác những gì có thể xảy ra là 590 00:30:29,720 --> 00:30:33,440 rằng chúng ta có lẽ sẽ thử để làm điều đó và cả hai trở lại 591 00:30:33,440 --> 00:30:36,185 một số loại trọng điểm giá trị như một tiêu cực 592 00:30:36,185 --> 00:30:39,420 hoặc có thể là vô giá trị hoặc một cái gì đó như thế. 593 00:30:39,420 --> 00:30:41,070 Hoặc có thể nó sẽ chỉ gây ra một lỗi. 594 00:30:41,070 --> 00:30:42,820 Và chúng ta sẽ phải sau đó bắt lỗi 595 00:30:42,820 --> 00:30:44,820 và sau đó cố gắng làm một cái gì đó dựa trên thực tế 596 00:30:44,820 --> 00:30:48,280 việc chuyển đổi này để một số nguyên thất bại. 597 00:30:48,280 --> 00:30:50,460 Đó là nơi mà ý tưởng này của optionals đến. 598 00:30:50,460 --> 00:30:56,120 Bạn thực sự có thể tạo ra một kiểu dữ liệu mà là một dấu hỏi int, cho ví dụ. 599 00:30:56,120 --> 00:30:59,140 600 00:30:59,140 --> 00:31:01,910 Điều đó có nghĩa là số nguyên này là, trên thực tế, tùy chọn. 601 00:31:01,910 --> 00:31:05,980 Và điều gì sẽ xảy ra là nó có thể chứa một số nguyên, hoặc nó có thể không. 602 00:31:05,980 --> 00:31:10,650 Nó có thể, trong thực tế, có khác này ý tưởng, hoàn toàn gọi là nill. 603 00:31:10,650 --> 00:31:14,900 Trong đó có nghĩa rằng có không có giá trị gì trong việc này. 604 00:31:14,900 --> 00:31:16,810 Nó thậm chí không bằng không, có chỉ không có giá trị. 605 00:31:16,810 --> 00:31:18,790 Có hoàn toàn không có giá trị đại diện. 606 00:31:18,790 --> 00:31:21,650 >> Và đó là những gì dòng này 71 đang làm. 607 00:31:21,650 --> 00:31:25,990 Là nó đang nói tôi rằng muốn cố gắng thiết lập một giá trị, 608 00:31:25,990 --> 00:31:31,790 một biến gọi là lớp, tương đương với chuyển đổi của chuỗi này vào trong một int. 609 00:31:31,790 --> 00:31:34,010 Vì vậy, tôi đã lấy chuỗi này, này thành phần đầu tiên, 610 00:31:34,010 --> 00:31:37,680 hay đúng hơn là thứ hai thành phần, bởi vì đây 611 00:31:37,680 --> 00:31:40,770 là không được lập chỉ mục, điều này chuỗi mà tôi đã chia tay. 612 00:31:40,770 --> 00:31:42,930 Và tôi muốn chuyển đổi đó đối với một số nguyên. 613 00:31:42,930 --> 00:31:46,730 Nhưng nó có thể không luôn luôn tiến hành bình thường, vì tưởng tượng 614 00:31:46,730 --> 00:31:50,710 điều gì sẽ xảy ra nếu, chứ không phải là loại một số, tôi gõ tất nhiên như asdf. 615 00:31:50,710 --> 00:31:51,534 >> Nó sẽ thất bại. 616 00:31:51,534 --> 00:31:54,200 Nó không thực sự sẽ được có thể chuyển đổi đó để một số nguyên 617 00:31:54,200 --> 00:31:55,510 như tôi mong đợi. 618 00:31:55,510 --> 00:31:58,660 Vì vậy, thay vì khởi một số loại lỗi, 619 00:31:58,660 --> 00:32:01,210 chúng tôi có ý tưởng này là một tùy chọn. 620 00:32:01,210 --> 00:32:04,240 Và điều đó có nghĩa là sử dụng đánh dấu câu hỏi này tôi có thể nói, 621 00:32:04,240 --> 00:32:09,100 OK, là nó có thể là tôi có thể mất này, biến nó thành một int, 622 00:32:09,100 --> 00:32:12,630 và đặt nó vào một biến, đó cũng sẽ là một int. 623 00:32:12,630 --> 00:32:15,420 Nếu vậy, thì điều đó có nghĩa rằng đây là thành công 624 00:32:15,420 --> 00:32:18,720 và phần đầu tiên này khối có thể tiếp tục. 625 00:32:18,720 --> 00:32:21,040 >> Nếu không, nó đã thất bại. 626 00:32:21,040 --> 00:32:25,840 Không có giá trị trong grade-- hay chứ không có giá trị trong hiện tại, 627 00:32:25,840 --> 00:32:30,220 và tôi thực sự phải cố gắng xử lý tình trạng lỗi này. 628 00:32:30,220 --> 00:32:33,340 Bạn sẽ thấy điều này dấu hỏi tất cả các thời gian 629 00:32:33,340 --> 00:32:35,990 trong Swift và trong ví dụ mã cho Swift. 630 00:32:35,990 --> 00:32:40,980 Và trong thực tế, các nhà điều hành nill, loại này các dấu hỏi, phần optionals, 631 00:32:40,980 --> 00:32:45,057 là có được có lẽ là một trong những điều khó khăn hơn 632 00:32:45,057 --> 00:32:47,640 để loại quấn quanh đầu của bạn như bạn thực sự làm việc với nó. 633 00:32:47,640 --> 00:32:48,490 >> Nó có thể làm cho ý nghĩa bây giờ. 634 00:32:48,490 --> 00:32:50,760 Và trên thực tế, khi tôi còn viết mẫu mã cho điều này, 635 00:32:50,760 --> 00:32:52,780 chắc chắn tôi hiểu những gì đang xảy ra, 636 00:32:52,780 --> 00:32:55,570 nhưng vẫn bắt tôi bởi ngạc nhiên tất cả vì vậy thường xuyên 637 00:32:55,570 --> 00:32:58,370 khi tôi sẽ thấy rằng một số dữ liệu đã thực sự 638 00:32:58,370 --> 00:33:04,024 một phiên bản con số không, một phiên bản tùy chọn của dữ liệu mà tôi đã mong đợi. 639 00:33:04,024 --> 00:33:06,190 Vì vậy, chỉ cần nhận ra rằng nếu bạn có một phiên bản tùy chọn 640 00:33:06,190 --> 00:33:09,360 bạn phải giải nén mà dữ liệu từ hộp này. 641 00:33:09,360 --> 00:33:15,870 >> Vì vậy, nó là loại giống như tưởng tượng nếu bạn I-- có một hộp và nó có chứa một cái gì đó. 642 00:33:15,870 --> 00:33:18,490 Và những gì bạn cần làm là để đặt câu hỏi, 643 00:33:18,490 --> 00:33:22,800 là nó có thể là hộp này thực sự chứa các dữ liệu mà tôi đang tìm kiếm? 644 00:33:22,800 --> 00:33:28,180 Nếu vậy, sau đó kéo ra rằng dữ liệu và đặt nó vào biến này hiện có. 645 00:33:28,180 --> 00:33:32,080 Nếu không, sau đó tôi chỉ cần có để bỏ qua nội dung của box này 646 00:33:32,080 --> 00:33:34,310 hoàn toàn bởi vì nó theo nghĩa đen có chứa gì. 647 00:33:34,310 --> 00:33:36,880 648 00:33:36,880 --> 00:33:40,400 >> Mọi thắc mắc về điều này? 649 00:33:40,400 --> 00:33:44,430 OK, chúng ta hãy di chuyển đi từ này loại điều dựa trên dòng lệnh 650 00:33:44,430 --> 00:33:47,610 và bắt đầu tìm kiếm tại một số công nghệ 651 00:33:47,610 --> 00:33:53,060 Xcode mà cung cấp cho chúng tôi trong các hình thức sân chơi. 652 00:33:53,060 --> 00:33:56,669 Vì vậy, có rất nhiều khả năng ở đây với Swift. 653 00:33:56,669 --> 00:33:59,210 Và nếu bạn mở Xcode và nó hỏi bạn những gì bạn muốn làm, 654 00:33:59,210 --> 00:34:01,340 bạn có thể mở ra các sân chơi và chỉ chơi xung quanh 655 00:34:01,340 --> 00:34:06,200 với rất nhiều cấu trúc khác nhau và các khía cạnh của ngôn ngữ 656 00:34:06,200 --> 00:34:11,800 trước khi bạn bắt đầu chạm vào iOS SDK hoặc Mac SDK. 657 00:34:11,800 --> 00:34:15,670 >> Vì vậy, trường hợp này, chúng ta hãy nói rằng tôi have-- Tôi có một ví dụ tương đối trù 658 00:34:15,670 --> 00:34:18,460 ở đây, nhưng chịu với tôi khi chúng tôi loại các hoạt động thông qua các ví dụ này. 659 00:34:18,460 --> 00:34:22,639 Hãy nói rằng chúng ta phải làm rất nhiều của số mũ với một giá trị cố định, 660 00:34:22,639 --> 00:34:26,397 như chúng ta biết rằng chúng ta sẽ cần đến làm rất nhiều quyền hạn vuông, ví dụ. 661 00:34:26,397 --> 00:34:28,980 Vì vậy, chúng ta sẽ có một số giá trị x, chúng ta sẽ vuông nó, 662 00:34:28,980 --> 00:34:30,540 chúng ta sẽ có một số giá trị y và chúng ta sẽ vuông nó. 663 00:34:30,540 --> 00:34:31,780 Vv và vv. 664 00:34:31,780 --> 00:34:35,549 >> Bây giờ chúng ta có thể thực sự chỉ cần tạo ra một sức mạnh của 2 chức năng này, phải không? 665 00:34:35,549 --> 00:34:37,090 Vì vậy, chúng tôi muốn tạo ra một sức mạnh của 2 chức năng. 666 00:34:37,090 --> 00:34:38,600 Chúng tôi sẽ chấp nhận một đôi. 667 00:34:38,600 --> 00:34:41,489 Chúng tôi sẽ output-- hoặc chúng tôi sẽ trở lại một kiểu double. 668 00:34:41,489 --> 00:34:46,159 Chúng tôi sẽ lấy kết quả này và sau đó cho hai lần 669 00:34:46,159 --> 00:34:52,040 những gì chúng ta thực sự có kết quả, mà được khởi tạo các giá trị của một, 670 00:34:52,040 --> 00:34:53,090 và nhân với x. 671 00:34:53,090 --> 00:34:56,540 Vì vậy, trong bản chất chúng ta có x lần x ở đây. 672 00:34:56,540 --> 00:35:01,860 >> Và như vậy thì tôi có thể sau đó, như chúng ta có thể mong đợi, thực hiện việc này, điện chạy của 2, 673 00:35:01,860 --> 00:35:03,680 cung cấp cho nó một số dữ liệu, tôi thích 2.0. 674 00:35:03,680 --> 00:35:05,756 Và chúng ta có thể nhìn thấy kết quả ở đây 4.0. 675 00:35:05,756 --> 00:35:09,200 Chạy điện của 2 trên 3.2 và chúng tôi có thể nhìn thấy kết quả của chúng tôi, 10,24. 676 00:35:09,200 --> 00:35:10,840 Cho đến nay rất tốt, phải không? 677 00:35:10,840 --> 00:35:12,070 Bây giờ chúng tôi đang nghĩ, tốt, OK. 678 00:35:12,070 --> 00:35:15,530 Bây giờ tôi thực sự cần phải làm rất nhiều quyền hạn của 3. 679 00:35:15,530 --> 00:35:19,180 Vì vậy, tôi sẽ sao chép dán tất cả các mã này, thay đổi tên của hàm từ 680 00:35:19,180 --> 00:35:24,440 sức mạnh của 2 quyền lực của 3, và tất cả mọi thứ sẽ giống nhau, ngoại trừ cho giá trị này 681 00:35:24,440 --> 00:35:26,740 ở đây, phạm vi này, 1 ... 2. 682 00:35:26,740 --> 00:35:29,590 >> Vì vậy, thay vì lặp đi lặp lại loop này hai lần, 683 00:35:29,590 --> 00:35:31,880 Tôi muốn lặp lại vòng lặp này ba lần. 684 00:35:31,880 --> 00:35:36,330 Vì vậy, tôi chỉ cần thay đổi giá trị từ 1 đến 3-- hay đúng hơn 2-3. 685 00:35:36,330 --> 00:35:39,230 Vì vậy, một lần nữa, cùng mã, đó là sự thay đổi duy. 686 00:35:39,230 --> 00:35:40,080 Bây giờ điều này cũng làm việc. 687 00:35:40,080 --> 00:35:43,860 Sức mạnh của 3 cung cấp một số giá trị của 2. 688 00:35:43,860 --> 00:35:44,420 Chúng tôi nhận được 8. 689 00:35:44,420 --> 00:35:45,370 Vì vậy, 2 cubed. 690 00:35:45,370 --> 00:35:48,060 Và 3,2 cubed là 32,768. 691 00:35:48,060 --> 00:35:50,597 Và cho đến nay rất tốt, phải không? 692 00:35:50,597 --> 00:35:52,930 Nhưng hy vọng đây là một chút bit của một lá cờ đỏ cho bạn 693 00:35:52,930 --> 00:35:55,530 trong đó chúng ta có một số sao chép mã 694 00:35:55,530 --> 00:35:58,800 ngoại trừ một số rất nhỏ thay đổi từ một đến tiếp theo. 695 00:35:58,800 --> 00:36:02,170 Vì vậy, có một cách nào đó chúng tôi có thể có thể đơn giản hóa 696 00:36:02,170 --> 00:36:06,080 Vấn đề này, nơi chúng ta có thể thực sự, lúc chạy, tìm ra một số, 697 00:36:06,080 --> 00:36:11,320 cung cấp cho chúng tôi một số chức năng mà có chính xác sức mạnh của chúng ta muốn. 698 00:36:11,320 --> 00:36:13,960 >> Và có ý tưởng này của đóng cửa, mà là thực sự, thực sự 699 00:36:13,960 --> 00:36:18,180 quan trọng trong bối cảnh của Swift, và trong nhiều ngôn ngữ khác. 700 00:36:18,180 --> 00:36:21,580 Nhưng có lẽ bạn sẽ thấy nó được sử dụng nhiều hơn như vậy trong Swift 701 00:36:21,580 --> 00:36:23,650 bởi vì nó được nhúng trong ngôn ngữ 702 00:36:23,650 --> 00:36:28,280 hơn bạn sẽ trong khác còn ngôn ngữ hiện đại. 703 00:36:28,280 --> 00:36:31,140 Vì vậy, ý tưởng về một đóng cửa là thế này, là chúng ta 704 00:36:31,140 --> 00:36:35,430 có thể có một chức năng mà là có nghĩa là để là một chức năng chung, một sức mạnh chung 705 00:36:35,430 --> 00:36:36,860 các chức năng. 706 00:36:36,860 --> 00:36:41,010 >> Và chức năng này sẽ chấp nhận mũ này mà chúng tôi thực sự 707 00:36:41,010 --> 00:36:42,990 muốn tạo. 708 00:36:42,990 --> 00:36:46,550 Vì vậy, ví dụ, đầu tiên Ví dụ, chúng ta muốn có một sức mạnh của 2. 709 00:36:46,550 --> 00:36:50,050 Vì vậy, chúng tôi sẽ cung cấp năng lượng của và sau đó trong ngoặc 2. 710 00:36:50,050 --> 00:36:52,490 Và bây giờ chú ý những gì này thực sự trả về. 711 00:36:52,490 --> 00:36:57,680 Này có một đầu vào của một mồi gọi y là một số nguyên, 712 00:36:57,680 --> 00:37:03,090 và nó trả về này điên tìm kiếm điều trong ngoặc parentheses-- 713 00:37:03,090 --> 00:37:06,230 đôi và sau đó mũi tên kép. 714 00:37:06,230 --> 00:37:10,270 >> Điều này có nghĩa là tôi sẽ trả về một chức năng. 715 00:37:10,270 --> 00:37:13,510 Tôi không trở về một loại dữ liệu, tôi 716 00:37:13,510 --> 00:37:16,350 trên thực tế trở về một chức năng có tham số này, mà 717 00:37:16,350 --> 00:37:22,680 chấp nhận một đôi như là đầu vào và kết quả đầu ra một đôi như một giá trị trả về. 718 00:37:22,680 --> 00:37:29,750 Và kết quả là, bởi vì bây giờ tôi đã gọi sức mạnh của, đi qua trong một số giá trị cho y, 719 00:37:29,750 --> 00:37:32,280 và tôi là tạo ra khác này thông báo function-- rằng có 720 00:37:32,280 --> 00:37:35,980 một chức năng đó được tạo ra bên trong của this-- những gì tôi đang làm 721 00:37:35,980 --> 00:37:37,830 Tôi là sau đó có thể thay đổi giá trị đó, một trong đó 722 00:37:37,830 --> 00:37:41,010 giá trị mà tôi đã thay đổi 2-3, bây giờ tôi làm cho nó y. 723 00:37:41,010 --> 00:37:42,500 >> Và điều này vẫn tồn tại. 724 00:37:42,500 --> 00:37:48,530 Vì vậy, mỗi khi tôi gọi điện của, về cơ bản những gì sẽ xảy ra 725 00:37:48,530 --> 00:37:51,030 là tôi có được trả lại một chức năng. 726 00:37:51,030 --> 00:37:54,310 Chú ý rằng ở đây tôi đã xác định một biến mới gọi là hình vuông. 727 00:37:54,310 --> 00:37:59,340 Tôi đã thiết lập nó bằng sức mạnh của, cung cấp giá trị này từ 2 đến sức mạnh của. 728 00:37:59,340 --> 00:38:02,030 Và điều này đã trả lại chức năng là. 729 00:38:02,030 --> 00:38:05,970 Vì vậy, hình vuông, các biến vuông, hiện nay là các loại chức năng 730 00:38:05,970 --> 00:38:11,390 có this-- oops, di chuyển lên một ít bit-- có chữ ký này, 731 00:38:11,390 --> 00:38:15,560 chấp nhận một đôi và đầu ra một đôi. 732 00:38:15,560 --> 00:38:17,330 >> Vì vậy, bây giờ những gì tôi đã thực hiện là tôi đã cơ bản 733 00:38:17,330 --> 00:38:22,890 tạo ra một chức năng gọi là hình vuông chấp nhận bất kỳ giá trị và sẽ vuông nó. 734 00:38:22,890 --> 00:38:24,960 Chúng ta có thể nhìn thấy những gì xảy ra ở đây. 735 00:38:24,960 --> 00:38:29,960 Vuông 3 ví dụ, có nghĩa là tôi sẽ để lấy giá trị 3 phương đó. 736 00:38:29,960 --> 00:38:32,010 Vậy làm thế nào chính xác để làm việc này? 737 00:38:32,010 --> 00:38:37,800 Khi tôi vượt qua sức mạnh của 2-- khi tôi vượt qua 2 vào sức mạnh này của chức năng, 738 00:38:37,800 --> 00:38:44,430 biến này y là dân cư với giá trị 2. 739 00:38:44,430 --> 00:38:46,340 Và đó là loại tổ chức trong bộ nhớ. 740 00:38:46,340 --> 00:38:49,430 Đó là loại thích tổ chức tại nhà nước ở đâu đó trong máy tính, 741 00:38:49,430 --> 00:38:51,980 chúng tôi không thực sự quan tâm như thế nào hoặc nơi vào thời điểm này. 742 00:38:51,980 --> 00:38:54,692 >> Nhưng tôi lại chức năng này gọi exponentiate. 743 00:38:54,692 --> 00:38:57,400 Và một lần nữa, nó không thực sự quan trọng những chức năng này được gọi là, 744 00:38:57,400 --> 00:39:01,730 chúng tôi thực sự có thể gọi nó là bất cứ điều gì, mà chấp nhận một đôi và trả về một đôi, 745 00:39:01,730 --> 00:39:05,640 nhưng sử dụng giá trị này y bên trong của nó. 746 00:39:05,640 --> 00:39:09,290 Vì vậy, mặc dù nó là chức năng này, chức năng exponentiater này đó là 747 00:39:09,290 --> 00:39:13,600 được trả lại cho tôi biến mà tôi gọi là hình vuông, 748 00:39:13,600 --> 00:39:17,980 nó đã chứa đựng bên trong nó khái niệm về những gì y đã. 749 00:39:17,980 --> 00:39:19,070 Và nó nhớ rằng. 750 00:39:19,070 --> 00:39:24,810 >> Vì vậy, mỗi khi tôi gọi là chức năng mà bây giờ gọi là hình vuông, nó sử dụng đó. 751 00:39:24,810 --> 00:39:27,990 Nhưng điều này cũng có nghĩa là tôi có thể tạo ra một biến khác sử dụng 752 00:39:27,990 --> 00:39:29,120 một sức mạnh khác nhau. 753 00:39:29,120 --> 00:39:33,240 Vì vậy, tôi có thể tạo ra một biến khối lập phương, cho Ví dụ, cung cấp cho nó sức mạnh của 3. 754 00:39:33,240 --> 00:39:37,230 Bây giờ cube sẽ thực sự mất một số giá trị và khối lập phương đó và trả lại nó. 755 00:39:37,230 --> 00:39:39,570 Vì vậy, chúng ta có thể thấy rằng tôi nhận được một giá trị 8 trong số đó. 756 00:39:39,570 --> 00:39:42,720 >> Nhưng giá trị y có không thay đổi vì họ 757 00:39:42,720 --> 00:39:44,980 tổ chức vào loại biến độc lập. 758 00:39:44,980 --> 00:39:47,480 Chúng được sắp xếp tổ chức tại không gian độc lập trong bộ nhớ. 759 00:39:47,480 --> 00:39:51,290 Vì vậy, sẽ luôn luôn có khối x với sức mạnh của 3. 760 00:39:51,290 --> 00:39:55,380 Và vuông sẽ luôn luôn có x với sức mạnh của 2, 761 00:39:55,380 --> 00:39:58,470 có nghĩa là hình vuông mà sẽ luôn luôn số vuông, như tôi mong đợi. 762 00:39:58,470 --> 00:40:01,794 Và hình lập phương sẽ luôn luôn cắt nhỏ hinh khôi số, như tôi mong đợi. 763 00:40:01,794 --> 00:40:04,960 Điều này cũng có nghĩa là đôi khi bạn có thể được một số loại sôi nổi cú pháp tìm kiếm 764 00:40:04,960 --> 00:40:09,030 nơi bạn có sức mạnh của ở rất dưới cùng của màn hình ở đây, sức mạnh của 5. 765 00:40:09,030 --> 00:40:11,410 Và bạn vượt qua vào kết quả. 766 00:40:11,410 --> 00:40:14,670 Bạn gọi đó là chức năng mà được trả lại với số lượng 4. 767 00:40:14,670 --> 00:40:17,440 Và vì vậy những gì cơ bản này là 4 với sức mạnh thứ năm, 768 00:40:17,440 --> 00:40:20,830 chúng ta có thể thấy các kết quả đó. 769 00:40:20,830 --> 00:40:23,690 Với tôi cho đến nay? 770 00:40:23,690 --> 00:40:26,620 >> Vì vậy, ý tưởng này được gọi là một đóng cửa, bởi vì những gì chúng tôi đang làm cơ bản 771 00:40:26,620 --> 00:40:30,610 là chúng tôi đang đóng gói một số dữ liệu into-- loại 772 00:40:30,610 --> 00:40:33,050 của kèm theo dữ liệu này vào một chức năng và chúng tôi 773 00:40:33,050 --> 00:40:36,240 có khả năng tái sử dụng chức năng này. 774 00:40:36,240 --> 00:40:41,480 Bây giờ cú pháp này mặc dù có thể thực sự được đơn giản hóa một số tiền lớn. 775 00:40:41,480 --> 00:40:45,005 Và có rất nhiều khả năng trong Swift đơn giản hóa này. 776 00:40:45,005 --> 00:40:47,780 Và đó là những gì sắp xếp của những người tiếp theo thực sự nhìn vào. 777 00:40:47,780 --> 00:40:51,400 Vì vậy, trong 7b ví dụ, chúng tôi mất cùng mã này chính xác. 778 00:40:51,400 --> 00:40:54,360 >> Nhưng bây giờ khá hơn thực sự xác định một chức năng 779 00:40:54,360 --> 00:40:57,910 bên trong của điện này chức năng và cung cấp cho nó một cái tên, 780 00:40:57,910 --> 00:41:00,150 và sau đó quay trở lại tên các chức năng đó, mà 781 00:41:00,150 --> 00:41:02,357 sau đó được sử dụng như là một phần của đóng cửa này, thay vào đó chúng tôi 782 00:41:02,357 --> 00:41:03,440 chỉ cần đi để đơn giản hóa nó. 783 00:41:03,440 --> 00:41:06,580 Chúng ta không cần chức năng này được đặt tên. 784 00:41:06,580 --> 00:41:09,760 Vì vậy, đây là khái niệm của một chức năng vô danh nơi chúng tôi có thể sau đó 785 00:41:09,760 --> 00:41:15,180 chấp nhận như là đầu vào, trong dấu ngoặc ở đây, biến x đó là kiểu double. 786 00:41:15,180 --> 00:41:17,250 >> Chúng tôi sẽ trả về kiểu double. 787 00:41:17,250 --> 00:41:19,830 Và sau đó các từ khóa, n, là đầu của chức năng này. 788 00:41:19,830 --> 00:41:22,180 Vì vậy, nhận thấy rằng tất cả những điều này là trong cặp ngoặc nhọn 789 00:41:22,180 --> 00:41:25,310 và chúng tôi đang xác định một anonymous chức năng ở đây. 790 00:41:25,310 --> 00:41:29,910 Chỉ cần một cách đơn giản xác định chính xác những điều tương tự. 791 00:41:29,910 --> 00:41:30,810 OK? 792 00:41:30,810 --> 00:41:36,740 Nhưng giữ, Swift thực sự cho phép chúng tôi để đi xa hơn và đơn giản hóa hơn nữa, 793 00:41:36,740 --> 00:41:40,180 bởi vì thực sự chúng tôi không quan tâm mà tham số này là 794 00:41:40,180 --> 00:41:41,700 đặt tên bất kỳ điều đặc biệt. 795 00:41:41,700 --> 00:41:48,090 Nó thực sự có thể được gọi là bất cứ điều gì và chúng ta vẫn có thể sử dụng tham số đầu tiên. 796 00:41:48,090 --> 00:41:53,800 >> Vì vậy, trong thực tế có này đặc biệt loại dữ liệu trong các chức năng ẩn danh, 797 00:41:53,800 --> 00:41:57,710 có cái tên đặc biệt này biến trong các chức năng ẩn danh 798 00:41:57,710 --> 00:42:00,280 mà bắt đầu với ký hiệu đô la và đại diện cho 799 00:42:00,280 --> 00:42:03,785 số tham số, số không lập chỉ mục, cho chức năng này. 800 00:42:03,785 --> 00:42:05,410 Vì vậy, có một vài điều đang xảy ra. 801 00:42:05,410 --> 00:42:08,550 Ở đây tôi sẽ trở lại, và sau đó một ngoặc móc đại diện cho một chức năng, 802 00:42:08,550 --> 00:42:09,050 phải không? 803 00:42:09,050 --> 00:42:13,920 >> Chú ý rằng tôi đã không xác định các loại tham số hoặc kiểu trả về. 804 00:42:13,920 --> 00:42:16,460 Nó thực sự có thể được suy ra vì chữ ký 805 00:42:16,460 --> 00:42:18,360 các chức năng ban đầu này. 806 00:42:18,360 --> 00:42:20,500 Vì vậy, chúng ta có thể loại bỏ đó là một khả năng. 807 00:42:20,500 --> 00:42:25,120 Nhưng tôi cũng có thể sử dụng ký hiệu đô la không để đại diện cho tham số đầu tiên này đó là 808 00:42:25,120 --> 00:42:28,200 thông qua vào chức năng ẩn danh này. 809 00:42:28,200 --> 00:42:31,630 Vì vậy, đơn giản hóa nó nhiều hơn. 810 00:42:31,630 --> 00:42:32,750 OK? 811 00:42:32,750 --> 00:42:33,820 Cho đến nay, tốt như vậy? 812 00:42:33,820 --> 00:42:36,980 >> Bây giờ là type-- này làm bạn nhớ đôla này không dấu 813 00:42:36,980 --> 00:42:40,130 mà chúng ta đã thấy trong ngoặc móc này rằng chúng tôi chỉ một thời gian ngắn 814 00:42:40,130 --> 00:42:43,870 trước ở Swift sáu ví dụ này? 815 00:42:43,870 --> 00:42:46,560 Nó ở ngay đây. 816 00:42:46,560 --> 00:42:48,430 Chú ý rằng là chính xác những gì chúng tôi đang tìm kiếm, 817 00:42:48,430 --> 00:42:51,580 là chúng ta đã qua vào chức năng phân chia này 818 00:42:51,580 --> 00:42:55,140 một chức năng vô danh mà kiểm tra các thông số đầu tiên 819 00:42:55,140 --> 00:42:57,830 để xem nó có bằng các biểu tượng thư ruột kết. 820 00:42:57,830 --> 00:42:59,830 Và đó chính xác là những gì xảy ra, đó là tất cả 821 00:42:59,830 --> 00:43:02,320 chúng tôi đang doing-- sự trở lại từ khóa được ngụ ý 822 00:43:02,320 --> 00:43:05,800 trong case-- này, chúng tôi đang trở về giá trị này, nơi chúng ta đang so sánh 823 00:43:05,800 --> 00:43:10,020 các tham số đầu tiên chống lại nhân vật tràng này. 824 00:43:10,020 --> 00:43:11,730 Và vì vậy mà loại này liệu làm rõ. 825 00:43:11,730 --> 00:43:17,210 Và bạn sẽ thấy cấu trúc này rất nhiều trong cú pháp Swift, do đó giữ cho rằng 826 00:43:17,210 --> 00:43:19,400 trong tâm trí khi bạn đang tham gia một cái nhìn lúc này. 827 00:43:19,400 --> 00:43:21,970 Bây giờ chúng ta có thể nhận ra đường ray một chút 828 00:43:21,970 --> 00:43:25,460 và đi thực sự ưa thích mà show thậm chí một số chi tiết của điện Swift. 829 00:43:25,460 --> 00:43:27,950 Bạn thậm chí có thể nhìn thấy một số các mã trong mẫu. 830 00:43:27,950 --> 00:43:29,790 Vì vậy, đó là lý do tại sao tôi sẽ để hiển thị này cho bạn. 831 00:43:29,790 --> 00:43:37,260 >> Về cơ bản những gì chúng ta có thể làm là, đầu tiên của tất cả, nó là loại không cần thiết đối với tôi 832 00:43:37,260 --> 00:43:41,710 để thực hiện tất cả các quyền lực của mã bởi vì nếu bạn nhập Darwin 833 00:43:41,710 --> 00:43:46,490 thư viện, nó thực sự bao gồm một chức năng gọi là pow rằng điều này cho bạn. 834 00:43:46,490 --> 00:43:50,570 Vì vậy, chúng ta có thể đơn giản hóa nó nhiều hơn và có sức mạnh lên chức năng của chúng tôi bây giờ chỉ 835 00:43:50,570 --> 00:43:54,890 là một tuyệt vời lót một nơi mà chúng ta chỉ trả lại chức năng ẩn danh này mà 836 00:43:54,890 --> 00:44:00,780 chấp nhận ký hiệu đô la 0 như mình cơ sở và y là số mũ của nó. 837 00:44:00,780 --> 00:44:02,582 >> Nhưng chúng ta có thể có được thực sự, thực sự ưa thích khi chúng ta 838 00:44:02,582 --> 00:44:04,790 nhận ra rằng Swift có một rất nhiều năng lượng dưới mui xe. 839 00:44:04,790 --> 00:44:07,010 Rất nhiều những nhà khai thác chúng tôi đã được xử lý, 840 00:44:07,010 --> 00:44:11,270 cộng với dấu hiệu và biểu tượng phân chia và tất cả những điều mà bạn thường 841 00:44:11,270 --> 00:44:15,620 hoạt động với các kiểu dữ liệu trong một ngôn ngữ lập trình, 842 00:44:15,620 --> 00:44:17,600 đang thực sự mở rộng trong Swift. 843 00:44:17,600 --> 00:44:21,460 Vì vậy, điều đó có nghĩa rằng trong chúng ta có thể xác định điều hành của chúng ta. 844 00:44:21,460 --> 00:44:26,020 >> Vì vậy, bây giờ tôi đang mệt mỏi của gõ vào tất cả điều này pow và sau đó là một dấu ngoặc đơn và sau đó 845 00:44:26,020 --> 00:44:26,520 cơ sở. 846 00:44:26,520 --> 00:44:27,520 Tôi không muốn làm điều đó. 847 00:44:27,520 --> 00:44:30,190 Tôi thực sự muốn có một điều hành, cho phép tôi làm điều đó. 848 00:44:30,190 --> 00:44:34,510 Vì vậy, tôi có thể nói rằng tôi muốn Swift để tạo ra một nhà điều hành, sao 849 00:44:34,510 --> 00:44:39,472 star-- bằng cách này tôi không thể sử dụng carat vì carat là một nhà điều hành mà 850 00:44:39,472 --> 00:44:40,680 làm điều gì đó khác hoàn toàn. 851 00:44:40,680 --> 00:44:42,720 Vì vậy, tôi không muốn sắp xếp của va chạm với điều đó. 852 00:44:42,720 --> 00:44:45,750 Và vì vậy những gì bạn nhìn thấy trong một loạt của ngôn ngữ, bao gồm cả Python, 853 00:44:45,750 --> 00:44:48,810 là như nhà điều hành sao sao để đại diện cho số mũ. 854 00:44:48,810 --> 00:44:50,730 >> Vì vậy, đó là lý do duy nhất lý do tại sao tôi đã làm điều đó. 855 00:44:50,730 --> 00:44:53,067 Và nó sẽ là một nhà điều hành loại ghi vào. 856 00:44:53,067 --> 00:44:54,900 Và tôi phải cung cấp cho nó một số thông tin 857 00:44:54,900 --> 00:44:58,386 về các ưu tiên về điều này điều hành vì vậy nó kết trái. 858 00:44:58,386 --> 00:45:00,260 Nó giống như tương đối ưu tiên cao so 859 00:45:00,260 --> 00:45:02,432 để tổng kết hay nhân. 860 00:45:02,432 --> 00:45:04,140 Đó là ưu tiên cao hơn tất cả những người. 861 00:45:04,140 --> 00:45:04,931 Vv và vv. 862 00:45:04,931 --> 00:45:07,410 Và sau đó tôi xác định các chức năng mà thực sự 863 00:45:07,410 --> 00:45:10,070 này đưa ra những nhà điều hành này không có gì. 864 00:45:10,070 --> 00:45:14,150 Vì vậy, giả sử rằng tôi có một trái bên và phía bên tay phải, 865 00:45:14,150 --> 00:45:17,330 mà có lẽ sẽ là một tên biến tốt hơn cho việc này. 866 00:45:17,330 --> 00:45:20,690 Phía bên tay trái và bên tay phải. 867 00:45:20,690 --> 00:45:26,740 Sau đó tôi có thể mất quyền năng này của phía bên tay trái để phía bên tay phải 868 00:45:26,740 --> 00:45:28,980 và trả lại giá trị đó. 869 00:45:28,980 --> 00:45:30,370 Vì vậy, bây giờ nó là siêu ngọt. 870 00:45:30,370 --> 00:45:33,790 Tất cả chúng ta phải làm là 2 sao 3 sao và đó là 2 đến sức mạnh thứ ba, 871 00:45:33,790 --> 00:45:35,290 và chúng tôi nhận được một giá trị của 8. 872 00:45:35,290 --> 00:45:40,280 2 sao sao 10 là 2 đến Điện thứ 10, chúng tôi nhận được 1.024. 873 00:45:40,280 --> 00:45:43,630 >> Vì vậy, hiện nay điện của chúng ta về chức năng, mà lại là khác nhau, 874 00:45:43,630 --> 00:45:47,030 vì toàn bộ ý tưởng đằng sau này là chúng tôi có một chức năng mà 875 00:45:47,030 --> 00:45:50,700 luôn luôn có một số giá trị và bội it-- hay đúng hơn 876 00:45:50,700 --> 00:45:53,240 có số mũ với sức mạnh tương tự. 877 00:45:53,240 --> 00:45:54,300 Vì vậy, bây giờ nó thậm chí còn đơn giản hơn. 878 00:45:54,300 --> 00:45:57,070 Vì vậy, bây giờ nó chỉ là đồng đô la ký 0 sao sao y. 879 00:45:57,070 --> 00:46:01,190 Chúng tôi thậm chí không có để sử dụng pow nữa. 880 00:46:01,190 --> 00:46:03,020 >> OK, ai mất? 881 00:46:03,020 --> 00:46:03,700 Chúng ta đang làm OK? 882 00:46:03,700 --> 00:46:05,090 Mọi thắc mắc về công cụ này? 883 00:46:05,090 --> 00:46:05,815 Yeah? 884 00:46:05,815 --> 00:46:09,500 >> Đung Khi you-- [Không nghe thấy] sức mạnh funk của y đôi. 885 00:46:09,500 --> 00:46:11,441 Vì vậy, khi bạn đang trở về một hàm. 886 00:46:11,441 --> 00:46:13,190 DANIEL Armendáriz: Funk sức mạnh của y đôi. 887 00:46:13,190 --> 00:46:14,270 Oh yeah, tôi không biết những con số là y. 888 00:46:14,270 --> 00:46:15,708 Xin lỗi về điều đó. 889 00:46:15,708 --> 00:46:19,420 >> Đung Tại sao các bạn trở về một chức năng [Không nghe thấy] bao vây. 890 00:46:19,420 --> 00:46:24,214 Không phải là đồng đô la không sao sao y [Không nghe thấy] 891 00:46:24,214 --> 00:46:29,710 thấy rằng nhà điều hành với điều đó trở về double [Không nghe thấy] tăng gấp đôi? 892 00:46:29,710 --> 00:46:32,742 >> DANIEL Armendáriz: Vì vậy, hãy tôi trả lời câu hỏi của bạn 893 00:46:32,742 --> 00:46:35,950 làm thế nào tôi hiểu nó và bạn có thể cho tôi biết nếu tôi không hiểu câu hỏi của bạn. 894 00:46:35,950 --> 00:46:42,850 Vì vậy, xây dựng này, nẹp xoăn ký hiệu đô la không sao y sao, 895 00:46:42,850 --> 00:46:44,280 là một hàm. 896 00:46:44,280 --> 00:46:50,080 Và nó chấp nhận một tham số đó là đại diện bởi dấu hiệu này đồng đô la không. 897 00:46:50,080 --> 00:46:55,830 Các từ khóa return được ngụ ý trong này rất ngắn, cú pháp hàm vô danh. 898 00:46:55,830 --> 00:46:57,870 >> Điều đó có nghĩa rằng về cơ bản điều này được nói 899 00:46:57,870 --> 00:47:01,270 là tôi đang xác định một function-- và sau đó tôi sẽ 900 00:47:01,270 --> 00:47:05,320 chỉ cần gọi nó something-- nơi tôi có một số giá trị y. 901 00:47:05,320 --> 00:47:08,300 Tôi có y, mà là gấp đôi. 902 00:47:08,300 --> 00:47:10,750 Và tôi trở lại một đôi. 903 00:47:10,750 --> 00:47:19,010 Và tôi có trong sự trở về y-- xin lỗi, Tôi không nên gọi là y-- x này. 904 00:47:19,010 --> 00:47:20,240 Ôi trời ơi, ôi, ôi. 905 00:47:20,240 --> 00:47:27,440 X-- nope-- sao sao y. 906 00:47:27,440 --> 00:47:29,720 >> Vì vậy, đây chỉ là một là phiên bản đơn giản này. 907 00:47:29,720 --> 00:47:33,990 Và do đó, lý do mà tôi có đô la dấu hiệu không là sử dụng bao vây này 908 00:47:33,990 --> 00:47:41,050 có nghĩa là tôi không còn có gõ pow, hoặc không còn làm 909 00:47:41,050 --> 00:47:45,570 Tôi phải làm một cái gì đó như 3 sao 2 sao. 910 00:47:45,570 --> 00:47:48,530 Tôi chỉ có thể có một đơn chức năng được gọi là hình vuông 911 00:47:48,530 --> 00:47:50,820 mà sẽ luôn luôn mất một số giá trị như là đầu vào 912 00:47:50,820 --> 00:47:52,980 và thực sự trở lại quảng trường đó. 913 00:47:52,980 --> 00:47:56,460 >> Vì vậy, toàn bộ mục đích của việc đóng cửa là để chỉ loại đóng gói thực tế 914 00:47:56,460 --> 00:47:59,920 mà tôi luôn muốn sử dụng bất cứ khi nào y Tôi gọi là chức năng như là sức mạnh 915 00:47:59,920 --> 00:48:01,710 khi chụp mũ này. 916 00:48:01,710 --> 00:48:04,650 Vì vậy, trở lại sau đó, một chức năng chấp nhận 917 00:48:04,650 --> 00:48:08,460 một đôi, đó là cơ sở, và trả lại kết quả của số mũ mà 918 00:48:08,460 --> 00:48:10,740 là chìa khóa ở đây. 919 00:48:10,740 --> 00:48:12,790 Và đó là sự khác biệt lớn. 920 00:48:12,790 --> 00:48:14,430 Không chỉ là một chút của một nảy nở. 921 00:48:14,430 --> 00:48:17,970 >> Điều này không có gì khác biệt so với các ví dụ trước, 922 00:48:17,970 --> 00:48:20,530 nhưng nó chỉ là một chút một phát triển, chúng tôi có thể thực sự 923 00:48:20,530 --> 00:48:24,500 tạo ra một nhà điều hành trong Swift và thực sự làm mọi thứ với nó, 924 00:48:24,500 --> 00:48:26,396 đó là loại một điều thú vị. 925 00:48:26,396 --> 00:48:27,520 Tôi đã trả lời câu hỏi của bạn? 926 00:48:27,520 --> 00:48:28,390 Ngọt ngào. 927 00:48:28,390 --> 00:48:31,350 Bất cứ điều gì khác trước khi chúng tôi di chuyển trên? 928 00:48:31,350 --> 00:48:33,570 OK. 929 00:48:33,570 --> 00:48:36,430 >> Bây giờ loại này đặt ra câu hỏi là that-- cũng OK, 930 00:48:36,430 --> 00:48:40,870 Hiện tại chúng tôi có khả năng cho chức năng để được trả lại. 931 00:48:40,870 --> 00:48:48,950 Chúng ta cũng có thể vượt qua chức năng như là dữ liệu hay như các thông số chức năng khác? 932 00:48:48,950 --> 00:48:50,710 Và trên thực tế, chúng tôi có thể. 933 00:48:50,710 --> 00:48:53,480 Vì vậy, chúng ta hãy nói rằng chúng tôi có tất cả các mã tương tự. 934 00:48:53,480 --> 00:48:56,120 Chúng tôi có các biến vuông rằng sẽ vuông mã này. 935 00:48:56,120 --> 00:48:59,320 Và chúng tôi có các biến cube rằng sẽ cube một số dữ liệu. 936 00:48:59,320 --> 00:49:02,440 Và chúng tôi thực sự muốn áp dụng để một loạt các con số. 937 00:49:02,440 --> 00:49:06,870 >> Vì vậy, những gì chúng ta có thể bị cám dỗ để làm, Tất nhiên, đó chắc chắn là hợp lệ, 938 00:49:06,870 --> 00:49:15,430 là để lặp qua danh sách các số và áp dụng các chức năng của tôi vuông và hình lập phương 939 00:49:15,430 --> 00:49:22,270 và có được hai danh sách mới như kết quả đó là danh sách ban đầu này bình 940 00:49:22,270 --> 00:49:24,970 và cắt nhỏ hinh khôi, tương ứng. 941 00:49:24,970 --> 00:49:26,880 Hoàn toàn chấp nhận. 942 00:49:26,880 --> 00:49:29,130 Nhưng điều gì nữa chúng ta thấy ở đây là chúng ta có, 943 00:49:29,130 --> 00:49:31,310 một lần nữa, sao chép mã của chúng tôi. 944 00:49:31,310 --> 00:49:34,310 Và có lẽ là cơ hội cho chúng tôi để đơn giản hóa này một chút. 945 00:49:34,310 --> 00:49:41,260 Điều gì nếu có một cách để chúng tôi thực sự luôn luôn lặp lại trên một số danh sách 946 00:49:41,260 --> 00:49:45,450 và chỉ cần vượt qua để kỳ diệu này hoạt một biến 947 00:49:45,450 --> 00:49:47,350 đại diện cho một chức năng mà chúng ta muốn áp dụng 948 00:49:47,350 --> 00:49:50,336 để mỗi mục duy nhất trong danh sách này. 949 00:49:50,336 --> 00:49:53,210 Điều này đặt ra khái niệm về những gì được gọi là hàm bậc cao. 950 00:49:53,210 --> 00:49:57,150 Và đó là những gì cơ bản này là, là chúng ta có thể tạo ra một chức năng. 951 00:49:57,150 --> 00:50:00,210 >> Và trong trường hợp này nó được gọi là một mapper, chỉ để cung cấp cho nó một cái tên, chỉ 952 00:50:00,210 --> 00:50:02,510 lập bản đồ trên mỗi mục duy nhất trong một danh sách. 953 00:50:02,510 --> 00:50:06,191 Nơi tôi có một danh sách và tôi có một chức năng. 954 00:50:06,191 --> 00:50:08,440 Và chức năng đó, tất nhiên, có một chữ ký số. 955 00:50:08,440 --> 00:50:11,980 Nó chấp nhận như là một tham số đôi và nó sẽ ra là một đôi. 956 00:50:11,980 --> 00:50:14,310 Và toàn bộ kết quả Chức năng này sẽ 957 00:50:14,310 --> 00:50:18,921 là một danh sách mới đó là kiểu double. 958 00:50:18,921 --> 00:50:19,420 OK? 959 00:50:19,420 --> 00:50:22,650 >> Và những gì tôi sẽ làm là áp dụng chức năng này f 960 00:50:22,650 --> 00:50:24,960 để mọi phần tử trong danh sách của tôi. 961 00:50:24,960 --> 00:50:30,280 Và reply-- và thay mới trở lại này danh sách như là một kết quả, đó là thực sự mát mẻ. 962 00:50:30,280 --> 00:50:31,820 Bây giờ tôi có thể vượt qua chức năng xung quanh. 963 00:50:31,820 --> 00:50:35,290 Và ý tưởng này của bậc cao chức năng là thực sự quan trọng. 964 00:50:35,290 --> 00:50:39,260 Và mapper này thực sự chỉ là thực hiện của người nghèo 965 00:50:39,260 --> 00:50:43,130 của một chức năng được xây dựng thành Swift được gọi là bản đồ. 966 00:50:43,130 --> 00:50:45,690 Và nó chính xác này, thậm chí có thể tốt hơn một chút. 967 00:50:45,690 --> 00:50:48,260 >> Đây chỉ là sắp xếp của một chung, phiên bản đơn giản mà 968 00:50:48,260 --> 00:50:51,270 cho phép chúng ta nhìn thấy các khái niệm áp dụng ở đây. 969 00:50:51,270 --> 00:50:54,630 Bây giờ nhìn vào cách mà tôi thực sự có thể áp dụng vuông của tôi 970 00:50:54,630 --> 00:50:57,850 và chức năng lập phương của tôi vào danh sách này của các con số. 971 00:50:57,850 --> 00:50:58,780 Tôi chạy mapper của tôi. 972 00:50:58,780 --> 00:51:00,280 Tôi cung cấp cho nó danh sách các số điện thoại. 973 00:51:00,280 --> 00:51:02,155 Tôi cung cấp cho nó những sự chức năng đó sẽ 974 00:51:02,155 --> 00:51:04,170 để áp dụng cho mỗi người trong những chỉ số. 975 00:51:04,170 --> 00:51:07,120 Và nó là có được đầu ra như một kết quả. 976 00:51:07,120 --> 00:51:11,810 Và tôi sẽ nhận được để thấy rằng tôi đã bình và cắt nhỏ hinh khôi số của tôi như là một kết quả. 977 00:51:11,810 --> 00:51:14,660 >> Và tất nhiên các mapper sẽ mất bất kỳ loại chức năng ẩn danh. 978 00:51:14,660 --> 00:51:17,640 Chúng tôi thậm chí có thể thấy rằng tôi đã tạo ra một chức năng ẩn danh mới 979 00:51:17,640 --> 00:51:20,220 chỉ mất một số tham số và chia cho 2. 980 00:51:20,220 --> 00:51:24,340 Và chúng ta có thể thấy rằng tôi đã, trên thực tế, chia danh sách của tôi bởi 2 thay thế. 981 00:51:24,340 --> 00:51:25,250 Mát mẻ? 982 00:51:25,250 --> 00:51:27,340 Cho đến nay, tốt như vậy? 983 00:51:27,340 --> 00:51:29,650 Được rồi, bây giờ hãy trở về với ý tưởng này. 984 00:51:29,650 --> 00:51:36,160 Hãy thực hiện điều này trở lại trong bối cảnh của một bảng điểm. 985 00:51:36,160 --> 00:51:41,860 >> Và nếu tôi làm điều đó, chúng ta có thể thấy rằng tôi có thể áp dụng một loạt các options-- 986 00:51:41,860 --> 00:51:44,330 hoặc một loạt các chức năng bậc cao 987 00:51:44,330 --> 00:51:51,450 để thực sự đơn giản hóa khả năng của mình để làm một nhiều thứ trên danh sách các số. 988 00:51:51,450 --> 00:51:53,660 Vì vậy, ví dụ, nếu tôi có một danh sách các số, 989 00:51:53,660 --> 00:51:57,060 một trong những chức năng bậc cao mà tồn tại được gọi là giảm. 990 00:51:57,060 --> 00:52:00,080 Những gì làm giảm khá hơn bản đồ, sẽ được giảm 991 00:52:00,080 --> 00:52:03,710 mất hai yếu tố trong danh sách, sẽ có một số chức năng mà 992 00:52:03,710 --> 00:52:07,420 so sánh hai yếu tố của danh sách, và sau đó nó sẽ 993 00:52:07,420 --> 00:52:09,610 loại output-- sự đầu ra của chức năng đó 994 00:52:09,610 --> 00:52:13,790 sẽ là một yếu tố khác mà sau đó so sánh bạn với người khác. 995 00:52:13,790 --> 00:52:18,190 >> Vì vậy, bạn có thể sử dụng điều này để thực sự tổng các số trong danh sách của bạn. 996 00:52:18,190 --> 00:52:20,640 Ví dụ, nếu bạn có một danh sách 1, 2, 3, 4, 5, 997 00:52:20,640 --> 00:52:22,940 bạn có những yếu tố đầu tiên, 1 và 2. 998 00:52:22,940 --> 00:52:27,270 Bạn có thể áp dụng cho một sự bổ sung chức năng đưa hai yếu tố 999 00:52:27,270 --> 00:52:30,980 và phun ra một trong những yếu tố, đó sẽ là giá trị 3. 1000 00:52:30,980 --> 00:52:35,684 Sau đó chúng ta lấy giá trị đó với 3 tiếp theo phần tử của danh sách, tổng hợp cả hai, 1001 00:52:35,684 --> 00:52:37,100 và sau đó tiếp tục đi xuống trong danh sách. 1002 00:52:37,100 --> 00:52:40,410 >> Chúng tôi đang giảm danh sách một giá trị duy nhất. 1003 00:52:40,410 --> 00:52:42,700 Và nó chỉ như vậy sẽ xảy ra rằng các dấu cộng 1004 00:52:42,700 --> 00:52:44,670 là một nhà điều hành, giống như chúng ta vừa thấy. 1005 00:52:44,670 --> 00:52:47,500 Toán tử này là thực sự là một chức năng mà 1006 00:52:47,500 --> 00:52:53,100 có chính xác danh sách này mà chúng ta muốn, thay vì các thuộc tính 1007 00:52:53,100 --> 00:52:54,770 mà chúng tôi muốn. 1008 00:52:54,770 --> 00:52:56,760 Vì vậy, tôi khuyến khích bạn hãy xem này. 1009 00:52:56,760 --> 00:52:59,290 Tôi muốn sắp xếp các động thái trên từ một số mã này 1010 00:52:59,290 --> 00:53:05,330 để chúng tôi thực sự có thể xem xét một số thực tế, thực tế, Swift thực sự trong Xcode, 1011 00:53:05,330 --> 00:53:06,880 trong phát triển iOS. 1012 00:53:06,880 --> 00:53:08,630 Nhưng hãy nhìn vào này và xem nếu bạn có thể 1013 00:53:08,630 --> 00:53:11,171 phân tích thông qua những gì đang xảy ra với một số các bậc cao 1014 00:53:11,171 --> 00:53:13,790 chức năng bao gồm cả bộ lọc, giảm, và bạn sẽ càng 1015 00:53:13,790 --> 00:53:17,060 thấy ở đâu đó trong bản đồ ở đây là tốt. 1016 00:53:17,060 --> 00:53:17,910 Nó ở ngay đây. 1017 00:53:17,910 --> 00:53:20,410 Nơi mà nó sẽ lấy một chuỗi của lớp và nó sẽ thực sự 1018 00:53:20,410 --> 00:53:24,230 bản đồ chúng bằng cách sử dụng cấu trúc switch, mà bạn có thể nhận ra từ C, 1019 00:53:24,230 --> 00:53:27,640 nhưng thực sự nó là nhiều hơn mạnh mẽ hơn so với các cấu trúc switch 1020 00:53:27,640 --> 00:53:29,810 mà chúng tôi có trong C. 1021 00:53:29,810 --> 00:53:31,930 >> Và chúng tôi sẽ áp dụng được cho mọi phần tử trong danh sách 1022 00:53:31,930 --> 00:53:34,540 và thực sự cung cấp các lớp thư của mỗi 1023 00:53:34,540 --> 00:53:40,780 của những lớp sử dụng tất cả các khái niệm mà chúng ta vừa nói về trước. 1024 00:53:40,780 --> 00:53:44,760 Bây giờ chúng ta hãy để bên ngoài cho chỉ một phút và nói về cấu trúc. 1025 00:53:44,760 --> 00:53:49,680 Và vì vậy cấu trúc là một sự chờ đợi trong C mà chúng tôi đã có thể định nghĩa một kiểu dữ liệu mới. 1026 00:53:49,680 --> 00:53:53,590 Cấu trúc tồn tại trong Swift. 1027 00:53:53,590 --> 00:53:58,980 Và do đó, làm rất nhiều cấu trúc khác gọi là sự đếm và các lớp học, mà thực sự 1028 00:53:58,980 --> 00:54:01,175 lấy ý tưởng này cho một người cấp độ hoàn toàn khác nhau. 1029 00:54:01,175 --> 00:54:05,300 >> Và về cơ bản nó chỉ là một cách xác định một kiểu dữ liệu mới. 1030 00:54:05,300 --> 00:54:11,010 Vì vậy, nếu bạn get-- nếu bạn đến trên lớp hoặc cấu trúc hoặc đếm, 1031 00:54:11,010 --> 00:54:13,290 không bị lẫn lộn bởi nó. 1032 00:54:13,290 --> 00:54:16,280 Đó chỉ là cách để xác định một số loại đặc biệt mới của dữ liệu. 1033 00:54:16,280 --> 00:54:20,230 Và điều này thực sự quan trọng khi chúng ta đang nói về sự phát triển ứng dụng iOS 1034 00:54:20,230 --> 00:54:24,630 bởi vì tất cả mọi thứ mà tồn tại trong ứng dụng iOS 1035 00:54:24,630 --> 00:54:27,460 về cơ bản là một đối tượng của một số loại. 1036 00:54:27,460 --> 00:54:31,980 Và một đối tượng cơ bản là một lớp hoặc một enum hoặc một cấu trúc. 1037 00:54:31,980 --> 00:54:34,760 >> Vì vậy, trong trường hợp này tôi xác định một loại dữ liệu mới 1038 00:54:34,760 --> 00:54:37,740 mà tôi đang kêu gọi đánh giá đó là một số tài sản, bao gồm cả 1039 00:54:37,740 --> 00:54:41,040 một cái tên và một chuỗi các lớp. 1040 00:54:41,040 --> 00:54:43,470 Vì vậy, một loại đánh giá mà tôi có thể có trong tâm trí 1041 00:54:43,470 --> 00:54:44,760 sẽ là câu đố, ví dụ. 1042 00:54:44,760 --> 00:54:48,180 Tôi muốn có một đánh giá đó là một bài kiểm tra 1043 00:54:48,180 --> 00:54:51,460 và rằng có một loạt các lớp kết hợp với đó, cho một bài kiểm tra, 1044 00:54:51,460 --> 00:54:52,840 đố hai, vv và vv. 1045 00:54:52,840 --> 00:54:55,720 >> Hoặc tôi có thể có một loại khác nhau đánh giá cho bài tập. 1046 00:54:55,720 --> 00:54:56,650 Và tôi có thể làm mọi thứ. 1047 00:54:56,650 --> 00:54:59,860 Tôi thực sự có thể có chức năng trong loại này 1048 00:54:59,860 --> 00:55:02,645 của dữ liệu, mà bây giờ được gọi là phương pháp. 1049 00:55:02,645 --> 00:55:04,520 Vì vậy, nếu bạn đã bao giờ nhìn thấy các từ phương pháp, nó thực sự 1050 00:55:04,520 --> 00:55:08,190 chỉ là một chức năng mà áp dụng để một lớp học rất cụ thể, 1051 00:55:08,190 --> 00:55:10,100 hoặc một loại rất cụ thể của dữ liệu. 1052 00:55:10,100 --> 00:55:12,350 Nó cho phép chúng ta sửa đổi các dữ liệu bên trong. 1053 00:55:12,350 --> 00:55:15,510 >> Vì vậy, nói cách khác, nếu tôi muốn thêm một lớp để đánh giá của tôi, 1054 00:55:15,510 --> 00:55:18,630 sau đó tất cả những gì cần làm là để thêm số điểm là đầu vào 1055 00:55:18,630 --> 00:55:22,660 với chức năng này để tài sản nội bộ của tôi. 1056 00:55:22,660 --> 00:55:25,880 Có một cấu trúc gọn gàng ở đây trong Swift, đó là dấu chấm này chấm chấm 1057 00:55:25,880 --> 00:55:31,780 điều hành, có nghĩa là điểm số có thể bây giờ chấp nhận bất kỳ số lượng các số nguyên. 1058 00:55:31,780 --> 00:55:33,940 Và điểm số sẽ là một mảng các số nguyên đó 1059 00:55:33,940 --> 00:55:39,030 đã được thông qua với chức năng của tôi, mà có nghĩa là tôi có thể làm những thứ như thế này. 1060 00:55:39,030 --> 00:55:42,360 >> Tôi có thể làm thêm lớp và chỉ cung cấp số lượng tùy ý các số nguyên vào nó 1061 00:55:42,360 --> 00:55:47,420 và thực sự được cung cấp một mảng của những giá trị trong chức năng của tôi 1062 00:55:47,420 --> 00:55:50,270 hoặc trong phương pháp của tôi, như là trường hợp. 1063 00:55:50,270 --> 00:55:54,040 Bây giờ điều này là quan trọng bởi vì tất cả mọi thứ trong Xcode, tất cả mọi thứ trong iOS, 1064 00:55:54,040 --> 00:55:56,250 trong thực tế, một đối tượng. 1065 00:55:56,250 --> 00:55:59,630 Vì vậy, giữ cho rằng trong tâm trí khi chúng ta phá mở Xcode 1066 00:55:59,630 --> 00:56:04,890 và bỏ qua quá iOS phiên bản hai và ba 1067 00:56:04,890 --> 00:56:08,820 và thực sự đi vào phiên bản bốn. 1068 00:56:08,820 --> 00:56:11,940 >> Và một lần nữa, tất cả những điều này sẽ được đăng tải trên trang thảo. 1069 00:56:11,940 --> 00:56:16,980 iOS bốn là sắp xếp của một toàn diện thực hiện một ứng dụng rất cơ bản. 1070 00:56:16,980 --> 00:56:23,920 Và những gì ứng dụng này có phải nó là tải một giao diện người dùng, mà trông như thế này. 1071 00:56:23,920 --> 00:56:28,680 Một lần nữa, nếu chúng ta click vào kịch bản chúng ta có thể thấy rằng đây là những gì nó trông như thế nào. 1072 00:56:28,680 --> 00:56:31,320 Đây là giao diện người dùng. 1073 00:56:31,320 --> 00:56:33,676 Nó có một tiêu đề ở đầu. 1074 00:56:33,676 --> 00:56:34,800 Tôi đã gọi nó là bộ sưu tập web. 1075 00:56:34,800 --> 00:56:38,400 >> Ở giữa có một yếu tố được gọi là các điểm ảnh UI. 1076 00:56:38,400 --> 00:56:41,340 Và ở phía dưới có một thanh công cụ với một nút duy nhất mà 1077 00:56:41,340 --> 00:56:46,850 có không gian co giãn cho phép nó trung tâm ở giữa của thanh công cụ này. 1078 00:56:46,850 --> 00:56:51,780 Và những gì xảy ra là khi điều này tải nó tải về một tập tin JSON đó 1079 00:56:51,780 --> 00:56:55,540 chứa trên một máy chủ ở nơi khác, phân tích rằng tập tin JSON, 1080 00:56:55,540 --> 00:56:58,130 và các tập tin JSON trông một chút như thế này. 1081 00:56:58,130 --> 00:57:02,770 1082 00:57:02,770 --> 00:57:06,230 Các tập tin JSON trông như thế này. 1083 00:57:06,230 --> 00:57:08,650 Có nó là. 1084 00:57:08,650 --> 00:57:11,730 >> Nó có một cái tên album và nó có một loạt các hình ảnh. 1085 00:57:11,730 --> 00:57:13,490 Mỗi của những bức ảnh có một tên và cũng 1086 00:57:13,490 --> 00:57:19,460 một URL tự đại diện cho jpeg phiên bản của bức ảnh cá nhân. 1087 00:57:19,460 --> 00:57:24,780 Vì vậy, những gì xảy ra là khi chương trình này tải, nó tải về các tập tin JSON, 1088 00:57:24,780 --> 00:57:30,590 phân tích nó, đặt tất cả những điều này vào tương đương với một mảng trong iOS 1089 00:57:30,590 --> 00:57:33,020 phát triển ứng dụng, đó là một NSArray. 1090 00:57:33,020 --> 00:57:37,520 Và sau đó tôi sau đó có thể tải dữ liệu này vào một ứng dụng 1091 00:57:37,520 --> 00:57:41,100 và tải nó trên màn hình của tôi. 1092 00:57:41,100 --> 00:57:44,760 >> Có một hình ảnh đó đã được nạp với các nút ở dưới cùng. 1093 00:57:44,760 --> 00:57:49,190 Nếu tôi bấm Get Hình ảnh Tiếp theo, sau đó nó kéo hình ảnh từ internet 1094 00:57:49,190 --> 00:57:53,370 và thay thế hình ảnh trong giao diện hình ảnh giao diện người dùng. 1095 00:57:53,370 --> 00:57:57,820 Vì vậy, bạn có thể tải về này và thực sự hãy xem nó trên máy tính của bạn. 1096 00:57:57,820 --> 00:58:00,940 Và xây dựng nó và thực sự biên dịch nó vào thiết bị của bạn. 1097 00:58:00,940 --> 00:58:04,710 Nhưng về cơ bản, quá trình này này, tạo ra các storyboard-- 1098 00:58:04,710 --> 00:58:08,080 hay đúng hơn là không create-- nhưng chọn kịch bản này. 1099 00:58:08,080 --> 00:58:15,030 Và thực sự we'll-- nếu bạn không mind-- chúng tôi sẽ chỉ mất một vài giây 1100 00:58:15,030 --> 00:58:18,390 để thực sự chỉ cho bạn cách này đã được thực hiện. 1101 00:58:18,390 --> 00:58:22,430 1102 00:58:22,430 --> 00:58:27,820 >> Chỉ cần như vậy là làm thế nào chúng ta có thể thực sự đạt được điều này là đã tạo thêm một chút 1103 00:58:27,820 --> 00:58:28,360 rõ ràng. 1104 00:58:28,360 --> 00:58:30,651 Độc thân xem ứng dụng, tôi sẽ gọi hội thảo này 1105 00:58:30,651 --> 00:58:35,330 Bốn đại diện này số cụ thể. 1106 00:58:35,330 --> 00:58:36,335 Lưu nó vào máy tính để bàn. 1107 00:58:36,335 --> 00:58:39,890 1108 00:58:39,890 --> 00:58:42,110 OK, sẽ bấm vào các kịch bản. 1109 00:58:42,110 --> 00:58:47,030 Và những gì tôi sẽ làm là tìm xem hình ảnh của tôi, 1110 00:58:47,030 --> 00:58:50,940 kéo nó vào người dùng của tôi giao diện và trung tâm nó. 1111 00:58:50,940 --> 00:58:54,850 Bây giờ chỉ cần đặt nó không may không phải là đi làm một toàn bộ rất nhiều, 1112 00:58:54,850 --> 00:58:58,680 ngoại trừ một màn hình đó là kích thước này chính xác. 1113 00:58:58,680 --> 00:59:03,950 >> Vì vậy, chúng ta có thể thuyết phục bản thân những cái đó nhấp vào vòng tròn thứ hai này, 1114 00:59:03,950 --> 00:59:08,290 đưa xuống pop này lên thực đơn ở đây và thay đổi 1115 00:59:08,290 --> 00:59:11,110 để xem trước, nơi mà chúng ta sẽ thực sự có được một cơ hội để xem trước như thế nào 1116 00:59:11,110 --> 00:59:13,530 điều này sẽ thực sự xem trên các thiết bị khác. 1117 00:59:13,530 --> 00:59:16,500 Như chúng ta có thể thấy, chúng tôi thậm chí không nhìn thấy nó trên trường hợp cụ thể này. 1118 00:59:16,500 --> 00:59:18,500 Vì vậy, tôi sẽ đóng cửa này cho bây giờ. 1119 00:59:18,500 --> 00:59:22,100 >> Và tôi sẽ chọn biểu tượng này xuống rất 1120 00:59:22,100 --> 00:59:23,910 phần dưới cùng của màn hình. 1121 00:59:23,910 --> 00:59:26,584 Nó nói giải quyết vấn đề Auto Layout. 1122 00:59:26,584 --> 00:59:28,000 Xin lỗi, nó cắt ở phía dưới. 1123 00:59:28,000 --> 00:59:36,360 Nhưng nếu tôi bấm vào đó, những gì tôi nhận được là pop này up-- đi. 1124 00:59:36,360 --> 00:59:39,740 1125 00:59:39,740 --> 00:59:51,220 Những gì tôi có được pop này lên là cho phép tôi thêm khó khăn thiếu. 1126 00:59:51,220 --> 00:59:53,780 Và bằng cách đó nó sau đó sẽ loại khóa nó 1127 00:59:53,780 --> 00:59:56,640 thành phần trung tâm của màn hình như tôi có thể mong đợi. 1128 00:59:56,640 --> 01:00:00,520 >> Bây giờ để có được nút này trên đầu của nó, tôi cần phải đi đến các Editor. 1129 01:00:00,520 --> 01:00:05,010 Tới Nhúng Trong và nhấp chuột Navigation Controller. 1130 01:00:05,010 --> 01:00:08,900 Những gì sẽ làm là sẽ thêm thành phần này hoàn toàn khác với nó, 1131 01:00:08,900 --> 01:00:11,310 nhưng nó sẽ thực sự liên kết nó trở lại giao diện ban đầu của tôi. 1132 01:00:11,310 --> 01:00:14,450 Và các chi tiết, một lần nữa, chúng tôi không thực sự cần phải quan tâm ngay bây giờ. 1133 01:00:14,450 --> 01:00:16,710 Nhưng tôi muốn có một thanh công cụ ở dưới cùng. 1134 01:00:16,710 --> 01:00:18,530 Vì vậy, tôi sẽ kiểm tra cho thấy Toolbar. 1135 01:00:18,530 --> 01:00:21,870 >> Và điều này cung cấp trong quan điểm của tôi, mà bây giờ đã ở một nơi khác, 1136 01:00:21,870 --> 01:00:23,900 chúng ta có thể nhìn thấy nó được liên kết ở đây. 1137 01:00:23,900 --> 01:00:28,710 Nó bây giờ cung cấp một thanh công cụ ở dưới cùng của giao diện người dùng của tôi. 1138 01:00:28,710 --> 01:00:34,770 Vì vậy, bây giờ, chứ không phải là một lựa chọn xem hình ảnh, tôi có thể tìm thấy một nhãn, 1139 01:00:34,770 --> 01:00:41,140 hay đúng hơn là một toolbar-- chúng ta hãy xem, mà là điều đó không? 1140 01:00:41,140 --> 01:00:41,890 Nó được gọi là gì? 1141 01:00:41,890 --> 01:00:49,760 Một mục button-- bar-- item-- thanh sorry-- nút item. 1142 01:00:49,760 --> 01:00:54,590 Tiếng tom rằng có và áp dụng một vài không gian linh hoạt ở hai bên 1143 01:00:54,590 --> 01:00:57,429 để thực sự tập trung đó. 1144 01:00:57,429 --> 01:00:58,970 Vì vậy, bây giờ tôi đã tạo ra giao diện của tôi, về cơ bản. 1145 01:00:58,970 --> 01:01:01,428 Và tôi có thể cung cấp cho nó một tên gọi theo nhấp đúp vào phần trên 1146 01:01:01,428 --> 01:01:04,880 ở đây và nói gallery web và như vậy. 1147 01:01:04,880 --> 01:01:08,100 Bây giờ một lần nữa, đây là những yếu tố tồn tại của bản thân. 1148 01:01:08,100 --> 01:01:10,400 Và tôi phải kết nối chúng vào mã của tôi mà 1149 01:01:10,400 --> 01:01:14,297 Tôi có thể làm bằng cách một lần nữa mang lên biểu tượng này tròn đôi, 1150 01:01:14,297 --> 01:01:15,380 thay đổi từ xem trước. 1151 01:01:15,380 --> 01:01:18,950 Trong đó, bằng cách này, chúng ta có thể thấy là độc đáo làm trung tâm và sẽ xem xét tốt 1152 01:01:18,950 --> 01:01:23,720 trên một loạt các thiết bị. 1153 01:01:23,720 --> 01:01:27,280 >> Chuyển sang tự động, mà sẽ đưa lên các mã ViewController. 1154 01:01:27,280 --> 01:01:29,030 Và bây giờ phần này là quan trọng. 1155 01:01:29,030 --> 01:01:34,590 Để các bạn để kết nối các hai yếu tố, mã của bạn với giao diện người dùng, 1156 01:01:34,590 --> 01:01:36,680 bạn chọn mục đó bạn muốn kết nối. 1157 01:01:36,680 --> 01:01:39,570 Vì vậy, trong trường hợp này, chúng tôi thực sự muốn mã hóa 1158 01:01:39,570 --> 01:01:43,520 thay đổi hình ảnh được chứa xem hình ảnh trong giao diện này. 1159 01:01:43,520 --> 01:01:47,070 Vì vậy, nếu bạn kiểm soát kích từ xem hình ảnh và kéo, 1160 01:01:47,070 --> 01:01:51,960 bạn sẽ nhận thấy rằng bạn có được một thanh nhỏ, khi bạn buông bỏ tất cả mọi thứ pop này 1161 01:01:51,960 --> 01:01:53,550 up sẽ xảy ra. 1162 01:01:53,550 --> 01:01:56,470 >> Và nó nói rằng chúng tôi sẽ tạo ra một kết nối. 1163 01:01:56,470 --> 01:01:59,300 Và từ đây tôi muốn cung cấp cho nó một cái tên, một cái gì đó giống như bộ sưu tập. 1164 01:01:59,300 --> 01:02:00,240 Nhấn Enter. 1165 01:02:00,240 --> 01:02:03,040 Và điều này thực sự cung cấp một biến gọi là gallery 1166 01:02:03,040 --> 01:02:08,600 mà tôi sau đó có thể tham khảo trong mã của tôi để thay đổi hình ảnh, ví dụ. 1167 01:02:08,600 --> 01:02:10,430 Vì vậy, làm thế nào để mã mà thực sự nhìn? 1168 01:02:10,430 --> 01:02:13,030 Vâng một lần nữa, tôi không muốn dành quá nhiều thời gian vào nó. 1169 01:02:13,030 --> 01:02:15,430 Và tôi khuyến khích bạn tải về nó và có một cái nhìn. 1170 01:02:15,430 --> 01:02:18,330 Nhưng một trong những nhất Khía cạnh quan trọng là mã 1171 01:02:18,330 --> 01:02:20,980 mà thực sự tìm nạp hình ảnh. 1172 01:02:20,980 --> 01:02:26,470 >> Vì vậy, trong trường hợp này tôi muốn để có được trong hình ảnh của tôi 1173 01:02:26,470 --> 01:02:28,520 mảng, được chứa trong lớp học của tôi. 1174 01:02:28,520 --> 01:02:33,390 Tôi muốn xác định tên và URL đó là được phân tách ra khỏi JSON này. 1175 01:02:33,390 --> 01:02:39,810 Trên thực tế yêu cầu các thiết bị để có được URL, để lấy các URL từ này, 1176 01:02:39,810 --> 01:02:44,060 và sau đó lấy dữ liệu từ các nội dung của URL đó. 1177 01:02:44,060 --> 01:02:49,430 Sau đó, chuyển đổi dữ liệu đó vào một hình ảnh bằng cách chuyển nó thành các hình ảnh giao diện người dùng. 1178 01:02:49,430 --> 01:02:52,880 Vì vậy, một lần nữa, đây là những loại bài khác nhau của các đối tượng, các loại khác nhau của các lớp. 1179 01:02:52,880 --> 01:02:58,410 >> Và sau đó tôi sau đó có thể thiết lập của tôi gallery.image bằng dữ liệu đó. 1180 01:02:58,410 --> 01:03:00,750 Và đó là loại thịt của nó mà thực sự là sau đó 1181 01:03:00,750 --> 01:03:08,250 có thể thay đổi các dữ liệu thay đổi from-- các hình ảnh từ một đến tiếp theo. 1182 01:03:08,250 --> 01:03:10,660 Vì vậy, một lần nữa, hy vọng doanh nghiệp rất nhiều các cấu trúc 1183 01:03:10,660 --> 01:03:12,240 sẽ có ý nghĩa hơn một chút. 1184 01:03:12,240 --> 01:03:15,260 Chú ý rằng có một số dấu chấm than ở đây. 1185 01:03:15,260 --> 01:03:19,810 Các dấu chấm than là về cơ bản liên quan đến các optionals. 1186 01:03:19,810 --> 01:03:22,657 >> Những gì tôi đang nói về cơ bản là mà thậm chí không cần kiểm tra 1187 01:03:22,657 --> 01:03:24,490 để xem nếu có dữ liệu trong tùy chọn này, 1188 01:03:24,490 --> 01:03:27,140 Tôi sẽ đi trước và giả mà có và Unwrap nó. 1189 01:03:27,140 --> 01:03:31,340 Hãy nhớ rằng chúng ta sử dụng sự tương tự của sắp xếp của một gói phần mềm cho các optionals 1190 01:03:31,340 --> 01:03:34,700 và chúng ta cần phải unwrap gói và kéo dữ liệu ra. 1191 01:03:34,700 --> 01:03:37,570 Các dấu chấm than lực lượng mà thực sự xảy ra. 1192 01:03:37,570 --> 01:03:39,590 >> Nhưng tôi biết rằng đây là an toàn vì tôi đã kiểm tra 1193 01:03:39,590 --> 01:03:42,070 để xem nếu dữ liệu hình ảnh bằng nil, tôi đã thực sự kiểm tra 1194 01:03:42,070 --> 01:03:45,420 để xem có tùy chọn là, trên thực tế, thất bại. 1195 01:03:45,420 --> 01:03:47,110 Nếu mà có, trên thực tế, đã thất bại rồi. 1196 01:03:47,110 --> 01:03:52,450 Và vì vậy tôi chắc chắn rằng một khi tôi nhận được để điểm tôi có thể an toàn unwrap dữ liệu đó. 1197 01:03:52,450 --> 01:03:55,710 Bạn cũng có thể nhìn thấy nó trong các hình thức của một dấu hỏi. 1198 01:03:55,710 --> 01:03:59,100 Vì vậy, nếu chúng ta di chuyển xuống đến nơi tôi cần phải thực sự phân tích các dữ liệu. 1199 01:03:59,100 --> 01:04:01,850 >> Vì vậy, không được đưa ra bởi các loại tên dài. 1200 01:04:01,850 --> 01:04:06,580 Bạn có thể tìm thấy trong Apple phát triển trang web rất nhiều 1201 01:04:06,580 --> 01:04:09,620 các tài liệu tham khảo cho tất cả các đối tượng và tất cả các quy trình 1202 01:04:09,620 --> 01:04:11,170 mà thực sự làm cho điều này có thể. 1203 01:04:11,170 --> 01:04:15,990 Nhưng cần chú ý rằng đây là cơ bản một chức năng mà tôi vượt qua nó một số dữ liệu. 1204 01:04:15,990 --> 01:04:18,410 Và tôi nhận lại một số loại dữ liệu. 1205 01:04:18,410 --> 01:04:24,190 Và tôi cần phải sử dụng điều này như là từ khóa để chuyển đổi nó thành NSDictionary này? 1206 01:04:24,190 --> 01:04:26,490 Đó là một lần nữa, một NSDictionary tùy chọn. 1207 01:04:26,490 --> 01:04:31,070 Mà sau đó tôi cần phải kiểm tra để xem nếu nó tồn tại. 1208 01:04:31,070 --> 01:04:37,130 >> Vì vậy, tôi có thể sử dụng nếu để equals thành công phân tích, 1209 01:04:37,130 --> 01:04:40,620 sau đó tôi biết rằng tùy chọn thực sự có chứa một số dữ liệu. 1210 01:04:40,620 --> 01:04:43,840 Hoặc những gì tôi đã làm được ở đây là chỉ là giả định rằng nếu có 1211 01:04:43,840 --> 01:04:49,067 không có lỗi mà nó là trong thực tế an toàn. 1212 01:04:49,067 --> 01:04:51,400 Được rồi, tôi muốn cảm ơn tất cả các bạn rất nhiều vì đã đến. 1213 01:04:51,400 --> 01:04:53,540 Tôi biết điều này là rất nhiều, nhưng đó chỉ là một giờ 1214 01:04:53,540 --> 01:04:55,920 để nói về một số công cụ khá tiên tiến. 1215 01:04:55,920 --> 01:04:59,640 Và vì vậy hy vọng bạn sẽ có được một cơ hội để tải về tất cả các mã 1216 01:04:59,640 --> 01:05:01,657 và mất một tốt hơn, nhiều hơn nhìn toàn diện tại đó. 1217 01:05:01,657 --> 01:05:04,240 Phân loại của thuyết phục mình về tất cả những thứ mà đang xảy ra. 1218 01:05:04,240 --> 01:05:06,800 Và tôi muốn cảm ơn bạn tất cả, một lần nữa, cho tới. 1219 01:05:06,800 --> 01:05:08,760 Và may mắn với các dự án cuối cùng của bạn. 1220 01:05:08,760 --> 01:05:10,600 Có một ngày tuyệt vời. 1221 01:05:10,600 --> 01:05:11,467