- Lists All of the Character Names in a
UITableView
on theMainViewController
. - Uses
SplitViewController
to make the app accessable on an iPad. - Two Different Varients of the application which use a shared Codebase.
- Create a Singleton for
APIHelper.swift
to make it easier to call network functions - Uses MVVM Design Pattern.
I avoided implementing any Dependencies in order to help Interviewers save some time.
You can find the entire Instructions Here
- Comprised of two parts, a list and a detail.
- On Phones, the list and detail should be separate screens, on Tablets, list and detail should appear on the same screen
- For the list view, data should be displayed as a text only, vertically scrollable list of character names
- The app should offer search functionality that filters the character list according to characters whose titles or descriptions contain the query text
- Clicking on an item should load the detail view of that character, including the character’s image, title, and description.
- For the image in the detail view, use the URL in the "Icon" field of the API JSON response. For items with blank or missing image URLs, use a placeholder image
- Two variants of the app should be created, using a single shared codebase
- Each variant should have a different name, package-name, and url that it pulls data from
- Consider custom cells instead of storyboard.
- Follow MVVM Design Pattern
- Strong network framework
- Cleanup
APIHelper.swift
file - Document Code
- Reorganize Some code
- Reduce Clutter
- Cleanup View Models
In order to test the app, project files need to be opened in Xcode 10.3
After the project has been opened successfully in Xcode click on the Schemes tab and select either SimpsonsCharacterViewer
or TheWireCharacterViewer
. You can now run the application on a device of your choice. Depending on which scheme you chose the API will change between "http://api.duckduckgo.com/?q=simpsons+characters&format=json" & "http://api.duckduckgo.com/?q=the+wire+characters&format=json".
Please feel free to contact me at anytime if you have any questions.