This project adds a new project and file template within Xcode. Currently both Swift
and Objective-C
is supported. Future updates will remove support for Objective-C
.
- CocoaPods
- Xcode
Run the following command within the terminal to install the xcode-seed
script. This should only be done once as any further changes are to be made by the xcode-seed
script.
$ bash -c "$(curl -s https://raw.githubusercontent.com/10pearls/xcode_project_template/master/Scripts/install.sh)"
Note: The command executed above only installs the xcode-seed
script. No changes to Xcode project and file templates have been made so far.
In order install XCode project and file templates, run the following command.
$ xcode-seed -u
This commands needs to be executed at least once. Running it for the first time will add the project and file templates to Xcode. Successive execution of the command will update the templates if needed.
In order to determine the current and server version of xcode-seed file, run the following command.
$ xcode-seed -v
This commands will determine the version of the server file and will compare it with your current version. Successive execution of the command will display both server and in-use versions and will let us know if it requires an update.
Follow the instructions below to create a new Xcode project using the project template installed via xcode-seed
command.
- Choose the option to create a new project within Xcode
- In the project template selection dialog, scroll to the bottom to view
TenPearls
category. - Select
iOS Starter App
and pressNext
. - Fill in the project information and programming language to use.
- Before pressing
Next
, uncheck bothInclude UI Tests
andInclude Unit Tests
. - Choose project folder location and press
Create
. - Close the opened Xcode project window.
- Navigate to project folder location via terminal.
- Run the following command to install
CocoaPod
dependencies.
$ pod install
- Open the XCode project by using the newly created
.xcworkspace
file. - Run the application via XCode to see a simple login screen.
Note: Choosing iOS Empty App
results a barebone XCode project.
Follow the instructions below to create a new Scene within a project using the file template installed via xcode-seed
command.
- Expand the
Scenes
group within the project file explorer in Xcode. - Add a new group within
Scenes
with name of the scene to be added. - Select
New File
by right clicking the newly created group. - In the file template selection dialog, scroll to the bottom to view
TenPearls
category. - Select
Scene
file type and pressNext
. - Fill in the scene name (Controller/View suffix will be added automatically), programming language to use and press
Next
. - Choose file location and confirm the
group
name before pressingCreate
. - A
Controller
,View
andxib
should now populate the newly created group and are waiting to be coded into.
To add navigation bar buttons to a controller that is a subclass of BaseController
, override the navigationBarLeftButtons
and navigationBarRightButtons
to return a array of NavigationBarItem
.
override func navigationBarLeftButtons() -> [NavigationBarItem] {
let addBtn = NavigationBarItem(type: .titleButton(title: "+"), target: self, onClickSelector: #selector(onAddbtnTap))
return [addBtn]
}
@objc
func onAddbtnTap() {
//do something
}
Follow the instructions below to create a new Control within a project using the file template installed via xcode-seed
command.
- Expand the
Controls
group within the project file explorer in Xcode. - Add a new group within
Controls
with name of the scene to be added. - Select
New File
by right clicking the newly created group. - In the file template selection dialog, scroll to the bottom to view
TenPearls
category. - Select
Control
file type and pressNext
. - Fill in the control name, programming language to use and press
Next
. - Choose file location and confirm the
group
name before pressingCreate
. - A swift file and
xib
should now populate the newly created group and are waiting to be coded into.
The project template added to Xcode comes with some networking code which uses the Alamofire
library. In order make use of the prewritten networking code, follow the instructions below.
- Create a class/struct within
Entities
conforming toCodable
for API Response. - Within
Services
, create a struct conforming toHTTPRequestProtocol
. - Implement the missing protocol methods and variables.
- Additional endpoint configurations can be made by overriding
HTTPRequestProtocol
methods. - Sample code below can be used to make the API request.
Login(userName: "username", password: "password") { result in
switch result {
case .success(let response):
//handle success
case .failure(let error):
//handle failure
}
}.makeRequest(User.self) //provide the Codable entity to make request
Note: Generic configuration such as setting baseURL
can be made in the HTTPRequestProtocol
extension. For endpoint specific configuration, override the HTTPRequestProtocol
methods.
This project welcomes contribution and suggestion