
הטקסט המלא של הדקות הראשונות בהרצאה «פרויקט גמר לקורס פיתוח אפליקציות לאייפון» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום וברוכים הבאים אנחנו רוצים לדבר היום על פרויקט מסכם שלכם פתח פשוט אפליקציה לעצמכם שבה תוכלו לבטא את כל מה שלמדנו בקורס ובעצם לתרגל וככה להגיע להבנה והכרה מקיפה יותר של החומר האפליקציה שאנחנו נרצה לבנות היא אפליקציה שמציגה סרטים האפליקציה מציגה את הסרטים מאתר של demoVDB, מה-IPI של demoVDB
אני אתן לכם עוד מעט את הכישורים ואתם תוכלו להתרשם בגדול האפליקציה מורידה ה-JSON מה-API ומציגה אותו בכל מיני אופנים.
ה-JSON ב-API מכין סרטים והאפליקציה פשוט תציג מידע על סרטים, לפי ז'אנר, מידע על סרטים פופולריים וגם מידע על הסרט האחרון שנוסף לאתר.
מעבר לזה אתם תרצו לדעת להוסיף גם סרטים שאהבתם למועדפים, וגם את זה אנחנו נעשה באפליקציה. המטרה של האפליקציה להציג את המידע על הסרטים בצורה נוחה, כיפית ומרוכזת, וכמובן היא רוצה לתת לכם גם אפשרות לגשת לדאטה
למידע למידע לסרטים גם אם המכשיר שלכם מתנתק פתאום מהרשת של האינטרנט ואת זה אנחנו נעשה על ידי דאטה בייס מקומי בקור דאטה אז יש לנו פה שילוב כזה יפה של ג'ייסון הרבה טבלאות הרבה טייבל ויוס כמובן גם עבודה עם קור דאטה בואו נתרכז בככה נושאים שיש בפרויקט אנחנו נרצה בפרויקט לעשות התחברות והשמה שמשתמשים בעזרת פייר בייס
כמו שלמדנו בקורס. אנחנו נרצה להשתמש ב-demo ו-db API כדי לקבל JSON ולעבוד עם פענוח של JSON באמצעות הפרוטוקול Codable ואתם מכירים את זה גם.
אנחנו נשתמש ב-URL Session ובגלל של-API יש מספר endpoints, מספר כתובות שאפשר לגשת אליהן, אז אתם תיגשו לתרגיל הזה כמו שניגשתם לתרגיל שבו פתרנו את ה-API של החדשות.
עכשיו, אנחנו נרצה פשוט בפרויקט לעבוד בצורה מסודרת, בצורה מרשימה שהיא תהיה יפה והגיונית, אז כל העבודה ל-API תהיה במחלקות נפרדות כדי לשמור ככה על חלוקה יפה של הקוד, על סידור יפה של הקוד.
שוב פעם ל-API יש מספר אנדפוינטס ולכן אתם בטח תרצו לייצר לכם איזשהו אינאם של האנדפוינטס ב-API. שוב פעם עשינו דברים דומים באפליקציה של החדשות.
בגלל שיש לנו מספר מסכים אנחנו נבחר להשתמש ב-Tabar Controller כדי להציג את המידע. אתם בטח זוכרים ש-Tabar Controller מכיל כמה טאבים למטה וככה אנחנו נציג את המידע.
שימוש ב-Tableview קוטרולרס בשביל להציג את הסרטים, כל מיני רשימות של סרטים ואנחנו נרצה גם לתמוך בפעולות סטנדרטיות של טייבל ויוס כמו שלמדנו, כמו למשל למחוק סרט מרשימה.
האפליקציה תשתמש ב-core data בנוסף ל-JSON בשביל לשמור את הסרטים מקומית עבור מצב שאין קישוריות אינטרנט. תחשבו נגיד שאתם נמצאים ברכבת ובהתחלה היה לכם אינטרנט ובאמצע הנסיעה פתאום אין לכם, אז אנחנו לא רוצים שהאפסיקציה תפסיק לעבוד באיזושהי צורה אלא אם כבר שלחתם לי את המידע אז רצוי לשמור אותו בcore data.
ננסה לשים לב בפרויקט, לא לעשות קוד חוזר, לא להעתיק קוד, לעשות copy-paste אלא להשתמש, לעשות שימוש חוזר ברכיבים והנחה בפרויקט יסבירו לכם למה הכוונה גם. בנוסף אנחנו נרצה להשתמש בתכנון מונחה עצמים כמה שאפשר, אז אני אשמח שתגדירו פרוטוקולים ותעבדו ככה לפי תבניות עיצוב מתאימות, תבניות עיצוב שלמדנו בקורס עבודה עם טייבל
ויו מתבצעת על ידי דלגייט דיזיינק פאטרן אנחנו נרצה להפוך אובייקטים להיות סינגלטונס וכן הלאה בדיוק כמו שלמדנו בקורס בנוסף למרות שזה סוג של תבנית עיצוב אתם תרצו לכתוב את האפליקציה שלכם בארכיטקטורה של mvc כדי לבצע הפרדה מצוינת בין הממשק משתמש לבין הלוגיקה של האפליקציה אוקיי אז אלה ככה הדגשים הכלליים ומה אנחנו רוצים בגדול לעשות באפליקציה
האפליקציה עכשיו, אתם תרצו לחשוב מה עוד, אז האפליקציה רוצה לאפשר התחברות והרשמה בשביל לאפשר לאנשים לשמור סרטים למועדפים. אז בעזרת הגדרה של משתמש, אתם תוכלו להגיד המשתמש הזה אהב סרט וככה גם הוא לא יוכל לעשות לייק לסרט פעמיים.
סרטים שאהבתי יתבססו על היוזר הנוכחי ואיזה סרטים הוא אהב. אתם תרצו כשאתם עושים התחברות והרשמה, כמו שעשינו בפרויקט לדוגמה, אתם תרצו לבדוק כתובת אימייל תקינה ואתם גם תרצו לבדוק שהסיסמה תכיל לפחות שלוש תווים ולידעת זה פשוטה, במידה והקלט לא תקין אתם תרצו להציג למשתמש הודעה ולא לבצע התחברות או הרשמה, סתם לעשות פניות להשראת מיותרות
כי התנאים האלה חייבים להתקיים. המסכים של ההתחברות וההרשמה יהיו בסטורי בורד נפרד כמו שלמדנו בקורס, אתם תרצו להפריד את כל הלוגיקה של רג'יסטר, רוגין וכן הלאה לקובץ סטורי בורד נפרד ולוויום קונטרולרים של רג'יסטר ורוגין ובנוסף אני מאוד ממליץ לכם לעשות ראוטר איזשהו
קלאס של ראוטר סינגלטון ראוטר כמו שעשינו בקורס כדי לנתק לחלוטין את כל הלוגיקה של התחברות והרשמה ללוגיקה האחרת של האתר משתמש שכבר התחבר בעבר לאפליקציה אנחנו ישר נעביר אותו לעמוד של האפליקציה בטעינה ראשונית של האפליקציה אנחנו נבדוק האם המשתמש קיים ואם כן מעבירים אותו לדף המידע,
אם לא אנחנו נעביר אותו לסטורי בורד של הלוגין והרג'יסטר. האפליקציה תשתמש באובייקט משותף סינגלטון, הכוונה לראוטר שעשינו בשיעורים.
טוב, עכשיו איזה מסכים יש לנו באפליקציה? ככה בערך האפליקציה שלכם תיראה, אתם כמובן מוזמנים להפוך אותה להרבה יותר יפה ומעוצבת, אבל באפליקציה שלכם צריכים להיות טאבר קונטרולר, ולטאבר קונטרולר יהיו ארבע טאבים טאב אחד של ז'אנרים את הז'אנרים אתם תרצו למשוך מאתר של דמו ודיבי
אתם לא תרצו להמציא אותם בעצמכם ובאתר של דמו ודיבי בכתובת הבאה אתם תוכלו פשוט לשלוף את כל הז'אנרים כג'ייסון וזה התרגיל הראשון שלכם לפענח את הג'ייסון בסדר בוא נסגור פה דברים שפתוחים כל הז'אנרים נמצאים כאן אז יש להם ז'אנר של אקשן לז'אנר הזה יש יש ID 28 לז'אנר של אדוונצ'ר, לז'אנר הזה יש ID של 12. אתם
בוודאי תרצו לקחת את ה-JSON הזה ולפרסר אותו בעזרת הפרוטוקול של קודאפל. אז מה שכתוב פה לכל ז'אנר יש ID, תכף נחזור לפה, אז האפליקציה מציגה ז'אנרים ואתם תרצו שברגע שלוחצים על ז'אנר לקחת את ה-ID של הז'אנר ולעבור לעמוד של הסרטים בז'אנר הזה.
מה זאת אומרת העמוד של הסרטים בז'אנר? הוא יצטרך עוד פעם ללכת ל-API יש לכם פה כתובת נוספת ללכת ל-API כשכאן הכתובת הזאת מציגה סרטים לפי ז'אנר ונגיד שיש לכם ז'אנר ID מספר 28 ככה אתם מציגים את הפרטים לז'אנר ID מספר 28 אם היוזר לחץ על ז'אנר של נגיד אדבנצ'ר אנחנו צריכים לדעת מה
ה-ID של הז'אנר ואז ללכת ל-API ולהציג סרטים לפי הז'אנר. הסרטים מוצגים ב-Table View Controller כמו שאתם יכולים לראות ואתם יודעים אני ממש טייבל ויו קונטרולר אחרי שמשכתם ג'ייסון.
עכשיו, בכל פעם שיש לנו מסך שמציג רשימות, הרבה פעמים אנחנו רוצים ללחוץ על פריט מסוים ולראות עליו מידע. במקרה הזה זו רשימה של סרטים, ולכן בלחיצה על כל סרט אנחנו רוצים להציג עוד ויו קונטרולר של Movie Details, אוקיי, פרטים על הסרט.
בואו נעבור למסך של Movie Details, כאן אתם פשוט נשארים עם הפרטים שכבר משכתם לגבי הסרט אבל מציגים עליו את המידע, אתם מעבירים את המידע למסך של Details. פשוט בלחיצה על סרט באים, מציגים את המידע על הסרט בעמוד נפרד, ופה אתם יכולים גם להציג את התקציר של הסרט למקרה שהוא משך למשתמשים שלנו טיים.
אוקיי, אז זה בעצם החלק הזה של הז'אנרים. דרך אגב, יש פה עניין של תמונות גם שלא דיברנו עליו. אתם רואים, פה יש לכם תמונה וכאן יש לכם תמונה, אז איך אנחנו יכולים להציג תמונות?
המידע על הסרטים, בואו ניכנס פה רגע לכתובת. אתם מקבלים פה ג'ייסון עכשיו בג'ייסון יש לנו את רזלט שזה מערך של סרטים מערך של ג'ייסון של סרטים ופה בפנים יש לנו פשוט כל מיני אובייקטים של סרטים כל אובייקטים של הסרטים במקרה הזה סרטים לפי ז'אנר כאן יש לנו פוסטר פאף אתם רואים שזה נתיב חלקי לתמונה זה לא הכתב את המילה על התמונה כי
אם אני אקליט את זה בדפדפן אני לא אקבל תמונה כדי להגיע לתמונות אתם תרצו ללכת פה להסבר הזה שכתבתי לכם אם יש לכם פוסטר פאף נתון מסוים כדי לקבל את התמונות אתם תרצו לשרשר את הפוסטר פאף שכתוב פה לכתובת של התמונות באתר הכתובת של התמונות היא htps/image.moviedb.org/t/p ופה אתם
רוצים לקבל תמונות ברוחב של 500 פיקסלים עבור איזשהו פוסטר פאפ מסוים מה זאת אומרת נגיד יש לכם את הפוסטר פאפ הזה אז אתם מדביקים אותו לפה בכתובת ואז תוצאה תהיה שלקחתם את הכתובת ושרשרתם לה את הפוסטר פאף, ומפה אתם יכולים לקבל את התמונה.
אז אם תלחצו פה על הלינק, אתם תראו שהלינק הזה באמת נותן לי את התמונה. הפוסטר פאף לבדו לא, אבל ברגע שאתם לוקחים את זה ומדביקים לתחילית פה, לכתובת המידע, אז אתם מקבלים את הכתובת של התמונה.
את התמונות אתם תרצו להציג בעזרת ספרייה להצגת תמונות, למשל SD-Waveימנט שכיסינו בקורס, היא תהיה מאוד מאוד יעילה ונוחה.
טוב, אז כיסינו פה את הטאפ של ז'אנרס, עכשיו יש לנו ב-API גם אפשרות לקבל מידע על סרטים פופולריים. שאילתה להצגת סרטים פופולריים היא השאילתה שמוצגת כאן, ברגע שאתם נכנסים ל-API אתם מקבלים רשימה אחרת של סרטים, את הסרטים הפופולריים, לא סרטים לפי ז'אנר אלא את כל הסרטים הפופולריים,
הכתובת היא /movie/popular, ובכל שאילתא אנחנו רוצים כמובן להכניס את הפרמטר הזה של ה-API, גם כאן בכל פעם שאנחנו לוחצים על סרט אנחנו רוצים להציג לגביו מידע אז אנחנו נשתמש שימוש חוזר במובי טייבלד ויו קונטרולר וגם במובי דיטלס ויו קונטרולר.
אנחנו לא רוצים לייצר מסכים כפולים סתם ויו קונטרולרים כפולים,