Objective-C – Type Casting

Objective-C Type Casting ”; Previous Next Type casting is a way to convert a variable from one data type to another data type. For example, if you want to store a long value into a simple integer then you can type cast long to int. You can convert values from one type to another explicitly using the cast operator as follows − (type_name) expression In Objective-C, we generally use CGFloat for doing floating point operation, which is derived from basic type of float in case of 32-bit and double in case of 64-bit. Consider the following example where the cast operator causes the division of one integer variable by another to be performed as a floating-point operation − Live Demo #import <Foundation/Foundation.h> int main() { int sum = 17, count = 5; CGFloat mean; mean = (CGFloat) sum / count; NSLog(@”Value of mean : %fn”, mean ); return 0; } When the above code is compiled and executed, it produces the following result − 2013-09-11 01:35:40.047 demo[20634] Value of mean : 3.400000 It should be noted here that the cast operator has precedence over division, so the value of sum is first converted to type double and finally it gets divided by count yielding a double value. Type conversions can be implicit which is performed by the compiler automatically or it can be specified explicitly through the use of the cast operator. It is considered good programming practice to use the cast operator whenever type conversions are necessary. Integer Promotion Integer promotion is the process by which values of integer type “smaller” than int or unsigned int are converted either to int or unsigned int. Consider an example of adding a character in an int − Live Demo #import <Foundation/Foundation.h> int main() { int i = 17; char c = ”c”; /* ascii value is 99 */ int sum; sum = i + c; NSLog(@”Value of sum : %dn”, sum ); return 0; } When the above code is compiled and executed, it produces the following result − 2013-09-11 01:38:28.492 demo[980] Value of sum : 116 Here, value of sum is coming as 116 because compiler is doing integer promotion and converting the value of ”c” to ascii before performing actual addition operation. Usual Arithmetic Conversion The usual arithmetic conversions are implicitly performed to cast their values in a common type. Compiler first performs integer promotion, if operands still have different types then they are converted to the type that appears highest in the following hierarchy − The usual arithmetic conversions are not performed for the assignment operators, nor for the logical operators && and ||. Let us take following example to understand the concept − Live Demo #import <Foundation/Foundation.h> int main() { int i = 17; char c = ”c”; /* ascii value is 99 */ CGFloat sum; sum = i + c; NSLog(@”Value of sum : %fn”, sum ); return 0; } When the above code is compiled and executed, it produces the following result − 2013-09-11 01:41:39.192 demo[15351] Value of sum : 116.000000 Here, it is simple to understand that first c gets converted to integer but because final value is float, so usual arithmetic conversion applies and compiler converts i and c into float and add them yielding a float result. Print Page Previous Next Advertisements ”;

Objective-C – Typedef

Objective-C Typedef ”; Previous Next The Objective-C programming language provides a keyword called typedef, which you can use to give a type a new name. Following is an example to define a term BYTE for one-byte numbers − typedef unsigned char BYTE; After this type definition, the identifier BYTE can be used as an abbreviation for the type unsigned char, for example:. BYTE b1, b2; By convention, uppercase letters are used for these definitions to remind the user that the type name is really a symbolic abbreviation, but you can use lowercase, as follows − typedef unsigned char byte; You can use typedef to give a name to user-defined data type as well. For example, you can use typedef with structure to define a new data type and then use that data type to define structure variables directly as follows − Live Demo #import <Foundation/Foundation.h> typedef struct Books { NSString *title; NSString *author; NSString *subject; int book_id; } Book; int main() { Book book; book.title = @”Objective-C Programming”; book.author = @”TutorialsPoint”; book.subject = @”Programming tutorial”; book.book_id = 100; NSLog( @”Book title : %@n”, book.title); NSLog( @”Book author : %@n”, book.author); NSLog( @”Book subject : %@n”, book.subject); NSLog( @”Book Id : %dn”, book.book_id); return 0; } When the above code is compiled and executed, it produces the following result − 2013-09-12 12:21:53.745 demo[31183] Book title : Objective-C Programming 2013-09-12 12:21:53.745 demo[31183] Book author : TutorialsPoint 2013-09-12 12:21:53.745 demo[31183] Book subject : Programming tutorial 2013-09-12 12:21:53.745 demo[31183] Book Id : 100 typedef vs #define The #define is a Objective-C directive, which is also used to define the aliases for various data types similar to typedef but with following differences − The typedef is limited to giving symbolic names to types only whereas #define can be used to define alias for values as well, like you can define 1 as ONE, etc. The typedef interpretation is performed by the compiler where as #define statements are processed by the pre-processor. Following is a simplest usage of #define − Live Demo #import <Foundation/Foundation.h> #define TRUE 1 #define FALSE 0 int main( ) { NSLog( @”Value of TRUE : %dn”, TRUE); NSLog( @”Value of FALSE : %dn”, FALSE); return 0; } When the above code is compiled and executed, it produces the following result − 2013-09-12 12:23:37.993 demo[5160] Value of TRUE : 1 2013-09-12 12:23:37.994 demo[5160] Value of FALSE : 0 Print Page Previous Next Advertisements ”;

Objective-C – Classes & Objects

Objective-C Classes & Objects ”; Previous Next The main purpose of Objective-C programming language is to add object orientation to the C programming language and classes are the central feature of Objective-C that support object-oriented programming and are often called user-defined types. A class is used to specify the form of an object and it combines data representation and methods for manipulating that data into one neat package. The data and methods within a class are called members of the class. Objective-C Characteristic The class is defined in two different sections namely @interface and @implementation. Almost everything is in form of objects. Objects receive messages and objects are often referred as receivers. Objects contain instance variables. Objects and instance variables have scope. Classes hide an object”s implementation. Properties are used to provide access to class instance variables in other classes. Objective-C Class Definitions When you define a class, you define a blueprint for a data type. This doesn”t actually define any data, but it does define what the class name means, that is, what an object of the class will consist of and what operations can be performed on such an object. A class definition starts with the keyword @interface followed by the interface(class) name; and the class body, enclosed by a pair of curly braces. In Objective-C, all classes are derived from the base class called NSObject. It is the superclass of all Objective-C classes. It provides basic methods like memory allocation and initialization. For example, we defined the Box data type using the keyword class as follows − @interface Box:NSObject { //Instance variables double length; // Length of a box double breadth; // Breadth of a box } @property(nonatomic, readwrite) double height; // Property @end The instance variables are private and are only accessible inside the class implementation. Allocating and Initializing Objective-C Objects A class provides the blueprints for objects, so basically an object is created from a class. We declare objects of a class with exactly the same sort of declaration that we declare variables of basic types. Following statements declare two objects of class Box − Box box1 = [[Box alloc]init]; // Create box1 object of type Box Box box2 = [[Box alloc]init]; // Create box2 object of type Box Both of the objects box1 and box2 will have their own copy of data members. Accessing the Data Members The properties of objects of a class can be accessed using the direct member access operator (.). Let us try the following example to make things clear − Live Demo #import <Foundation/Foundation.h> @interface Box:NSObject { double length; // Length of a box double breadth; // Breadth of a box double height; // Height of a box } @property(nonatomic, readwrite) double height; // Property -(double) volume; @end @implementation Box @synthesize height; -(id)init { self = [super init]; length = 1.0; breadth = 1.0; return self; } -(double) volume { return length*breadth*height; } @end int main() { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; Box *box1 = [[Box alloc]init]; // Create box1 object of type Box Box *box2 = [[Box alloc]init]; // Create box2 object of type Box double volume = 0.0; // Store the volume of a box here // box 1 specification box1.height = 5.0; // box 2 specification box2.height = 10.0; // volume of box 1 volume = [box1 volume]; NSLog(@”Volume of Box1 : %f”, volume); // volume of box 2 volume = [box2 volume]; NSLog(@”Volume of Box2 : %f”, volume); [pool drain]; return 0; } When the above code is compiled and executed, it produces the following result − 2013-09-22 21:25:33.314 ClassAndObjects[387:303] Volume of Box1 : 5.000000 2013-09-22 21:25:33.316 ClassAndObjects[387:303] Volume of Box2 : 10.000000 Properties Properties are introduced in Objective-C to ensure that the instance variable of the class can be accessed outside the class. The various parts are the property declaration are as follows. Properties begin with @property, which is a keyword It is followed with access specifiers, which are nonatomic or atomic, readwrite or readonly and strong, unsafe_unretained or weak. This varies based on the type of the variable. For any pointer type, we can use strong, unsafe_unretained or weak. Similarly for other types we can use readwrite or readonly. This is followed by the datatype of the variable. Finally, we have the property name terminated by a semicolon. We can add synthesize statement in the implementation class. But in the latest XCode, the synthesis part is taken care by the XCode and you need not include synthesize statement. It is only possible with the properties we can access the instance variables of the class. Actually, internally getter and setter methods are created for the properties. For example, let”s assume we have a property @property (nonatomic ,readonly ) BOOL isDone. Under the hood, there are setters and getters created as shown below. -(void)setIsDone(BOOL)isDone; -(BOOL)isDone; Print Page Previous Next Advertisements ”;

Node & MongoDB – Quick Guide

Node & MongoDB – Quick Guide ”; Previous Next Node & MongoDB – Overview What is Node.js? Node.js is a server-side platform built on Google Chrome”s JavaScript Engine (V8 Engine). Node.js was developed by Ryan Dahl in 2009 and its latest version is v0.10.36. The definition of Node.js as supplied by its official documentation is as follows − Node.js is a platform built on Chrome”s JavaScript runtime for easily building fast and scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices. Node.js is an open source, cross-platform runtime environment for developing server-side and networking applications. Node.js applications are written in JavaScript, and can be run within the Node.js runtime on OS X, Microsoft Windows, and Linux. Node.js also provides a rich library of various JavaScript modules which simplifies the development of web applications using Node.js to a great extent. Node.js = Runtime Environment + JavaScript Library mongodb mongodb is node.js driver to connect and perform database operations on MongoDB. To install mongodb, run the following npm command. npm install mongodb + [email protected] added 1 package from 1 contributor in 1.781s Creating/Connecting to Database Once mongoClient is instantiated, its connect() method can be used to get connection to a database. // MongoDBClient const client = new MongoClient(url, { useUnifiedTopology: true }); // make a connection to the database client.connect(function(error) { if (error) throw error; console.log(“Connected!”); // create or connect to database const db = client.db(database); // close the connection client.close(); }); In case database is not present then above command will create the same. In subsequent chapters, we”ll see the various operations on MongoDB using Node. Node & MongoDB – Environment Setup Install MongoDB database Follow the MongoDB installation steps using MongoDB – Environment Install Node Live Demo Option Online You really do not need to set up your own environment to start learning Node.js. Reason is very simple, we already have set up Node.js environment online, so that you can execute all the available examples online and learn through practice. Feel free to modify any example and check the results with different options. Try the following example using the Live Demo option available at the top right corner of the below sample code box (on our website) − Live Demo /* Hello World! program in Node.js */ console.log(“Hello World!”); For most of the examples given in this tutorial, you will find a Try it option, so just make use of it and enjoy your learning. Local Environment Setup If you are still willing to set up your environment for Node.js, you need the following two softwares available on your computer, (a) Text Editor and (b) The Node.js binary installables. Text Editor This will be used to type your program. Examples of few editors include Windows Notepad, OS Edit command, Brief, Epsilon, EMACS, and vim or vi. Name and version of text editor can vary on different operating systems. For example, Notepad will be used on Windows, and vim or vi can be used on windows as well as Linux or UNIX. The files you create with your editor are called source files and contain program source code. The source files for Node.js programs are typically named with the extension “.js“. Before starting your programming, make sure you have one text editor in place and you have enough experience to write a computer program, save it in a file, and finally execute it. The Node.js Runtime The source code written in source file is simply javascript. The Node.js interpreter will be used to interpret and execute your javascript code. Node.js distribution comes as a binary installable for SunOS , Linux, Mac OS X, and Windows operating systems with the 32-bit (386) and 64-bit (amd64) x86 processor architectures. Following section guides you on how to install Node.js binary distribution on various OS. Download Node.js archive Download latest version of Node.js installable archive file from Node.js Downloads. At the time of writing this tutorial, following are the versions available on different OS. OS Archive name Windows node-v12.16.1-x64.msi Linux node-v12.16.1-linux-x86.tar.gz Mac node-v12.16.1-darwin-x86.tar.gz SunOS node-v12.16.1-sunos-x86.tar.gz Installation on UNIX/Linux/Mac OS X, and SunOS Based on your OS architecture, download and extract the archive node-v12.16.1-osname.tar.gz into /tmp, and then finally move extracted files into /usr/local/nodejs directory. For example: $ cd /tmp $ wget http://nodejs.org/dist/v12.16.1/node-v12.16.1-linux-x64.tar.gz $ tar xvfz node-v12.16.1-linux-x64.tar.gz $ mkdir -p /usr/local/nodejs $ mv node-v12.16.1-linux-x64/* /usr/local/nodejs Add /usr/local/nodejs/bin to the PATH environment variable. OS Output Linux export PATH=$PATH:/usr/local/nodejs/bin Mac export PATH=$PATH:/usr/local/nodejs/bin FreeBSD export PATH=$PATH:/usr/local/nodejs/bin Installation on Windows Use the MSI file and follow the prompts to install the Node.js. By default, the installer uses the Node.js distribution in C:Program Filesnodejs. The installer should set the C:Program Filesnodejsbin directory in window”s PATH environment variable. Restart any open command prompts for the change to take effect. Verify installation: Executing a File Create a js file named main.js on your machine (Windows or Linux) having the following code. Live Demo /* Hello, World! program in node.js */ console.log(“Hello, World!”) Now execute main.js file using Node.js interpreter to see the result − $ node main.js If everything is fine with your installation, this should produce the following result − Hello, World! mongodb mongodb is node.js driver to connect and perform database operations on MongoDB. To install mongodb, run the following npm command. npm

Node & MongoDB – Sorting Records

Node & MongoDB – Sorting Records ”; Previous Next To sort the selected documents of a collection, you can use collection.find().sort() methods to sort documents. database.collection(“sampleCollection”).find({}).sort({First_Name: -1}).toArray(function(error, result) { if (error) throw error; console.log(result); }); Example Try the following example to select limited documents in a mongodb collection − Copy and paste the following example as mongodb_example.js − const MongoClient = require(”mongodb”).MongoClient; // Prepare URL const url = “mongodb://localhost:27017/”; // make a connection to the database MongoClient.connect(url, function(error, client) { if (error) throw error; console.log(“Connected!”); // Connect to the database const database = client.db(”myDb”); database.collection(“sampleCollection”).find({}).sort({First_Name: -1}).toArray(function(error, result) { if (error) throw error; console.log(result); }); // close the connection client.close(); }); Output Execute the mysql_example.js script using node and verify the output. node mongodb_example.js Connected! [ { _id: 60c4bbb40f8c3920a0e30fdd, First_Name: ”Radhika”, Last_Name: ”Sharma”, Date_Of_Birth: ”1995-09-26”, e_mail: ”[email protected]”, phone: ”9000012345” }, { _id: 60c4bbb40f8c3920a0e30fde, First_Name: ”Rachel”, Last_Name: ”Christopher”, Date_Of_Birth: ”1990-02-16”, e_mail: ”[email protected]”, phone: ”9000054321” }, { _id: 60c4bbb40f8c3920a0e30fdf, First_Name: ”Fathima”, Last_Name: ”Sheik”, Date_Of_Birth: ”1990-02-16”, e_mail: ”[email protected]”, phone: ”9000012345” } ] Print Page Previous Next Advertisements ”;

Node & MongoDB – Select Document

Node & MongoDB – Select Documents ”; Previous Next To select documents of a collection, you can use collection.findOne() or collection.find() methods to select one or multiple documents. database.collection(“sampleCollection”).findOne({}, function(error, result) { if (error) throw error; console.log(result); }); database.collection(“sampleCollection”).find({}).toArray(function(error, result) { if (error) throw error; console.log(result); }); Example Try the following example to select documents in a mongodb collection − Copy and paste the following example as mongodb_example.js − const MongoClient = require(”mongodb”).MongoClient; // Prepare URL const url = “mongodb://localhost:27017/”; // make a connection to the database MongoClient.connect(url, function(error, client) { if (error) throw error; console.log(“Connected!”); // Connect to the database const database = client.db(”myDb”); database.collection(“sampleCollection”).findOne({}, function(error, result) { if (error) throw error; console.log(result); }); database.collection(“sampleCollection”).find({}).toArray(function(error, result) { if (error) throw error; console.log(result); }); // close the connection client.close(); }); Output Execute the mysql_example.js script using node and verify the output. node mongodb_example.js Connected! { _id: 60c4bbb40f8c3920a0e30fdd, First_Name: ”Radhika”, Last_Name: ”Sharma”, Date_Of_Birth: ”1995-09-26”, e_mail: ”[email protected]”, phone: ”9000012345” } [ { _id: 60c4bbb40f8c3920a0e30fdd, First_Name: ”Radhika”, Last_Name: ”Sharma”, Date_Of_Birth: ”1995-09-26”, e_mail: ”[email protected]”, phone: ”9000012345” }, { _id: 60c4bbb40f8c3920a0e30fde, First_Name: ”Rachel”, Last_Name: ”Christopher”, Date_Of_Birth: ”1990-02-16”, e_mail: ”[email protected]”, phone: ”9000054321” }, { _id: 60c4bbb40f8c3920a0e30fdf, First_Name: ”Fathima”, Last_Name: ”Sheik”, Date_Of_Birth: ”1990-02-16”, e_mail: ”[email protected]”, phone: ”9000012345” }, { _id: 60c4bbb40f8c3920a0e30fdc, First_Name: ”Mahesh”, Last_Name: ”Parashar”, Date_Of_Birth: ”1990-08-21”, e_mail: ”[email protected]”, phone: ”9034343345” } ] Print Page Previous Next Advertisements ”;

Node & MongoDB – Embedded Documents

Node & MongoDB – Embedded Document ”; Previous Next To insert embedded document(s) in a collection of a database, you can use collection.insertOne() or collection.insertMany() methods to insert one or multiple documents. database.collection(“sampleCollection”).insertOne(firstDocument, function(error, res) { if (error) throw error; console.log(“1 document inserted”); }); database.collection(“sampleCollection”).insertMany(documents, function(error, res) { if (error) throw error; console.log(“Documents inserted: ” + res.insertedCount); }); Example Try the following example to insert documents in a mongodb collection − Copy and paste the following example as mongodb_example.js − const MongoClient = require(”mongodb”).MongoClient; // Prepare URL const url = “mongodb://localhost:27017/”; const firstPost = { title : ”MongoDB Overview”, description : ”MongoDB is no SQL database”, by: ”tutorials point”, url: ”http://www.tutorialspoint.com”, comments: [{ user: ”user1”, message: ”My First Comment”, dateCreated: ”20/2/2020”, like: 0 }, { user: ”user2”, message: ”My Second Comment”, dateCreated: ”20/2/2020”, like: 0 }] }; // make a connection to the database MongoClient.connect(url, function(error, client) { if (error) throw error; console.log(“Connected!”); // Connect to the database const database = client.db(”posts”); database.collection(“samplePost”).insertOne(firstPost, function(error, res) { if (error) throw error; console.log(“1 document inserted”); }); // close the connection client.close(); }); Output Execute the mysql_example.js script using node and verify the output. node mongodb_example.js Connected. 1 document inserted Print Page Previous Next Advertisements ”;

Node & MongoDB – Connect Database

Node & MongoDB – Connecting Database ”; Previous Next Node mongodb provides mongoClient object which is used to connect a database connection using connect() method. This function takes multiple parameters and provides db object to do database operations. Syntax // MongoDBClient const client = new MongoClient(url, { useUnifiedTopology: true }); // make a connection to the database client.connect(); You can disconnect from the MongoDB database anytime using another connection object function close(). Syntax client.close() Example Try the following example to connect to a MongoDB server − Copy and paste the following example as mongodb_example.js − const MongoClient = require(”mongodb”).MongoClient; // Prepare URL const url = “mongodb://localhost:27017/”; // make a connection to the database MongoClient.connect(url, function(error, client) { if (error) throw error; console.log(“Connected!”); // close the connection client.close(); }); Output Execute the mysql_example.js script using node and verify the output. node mongodb_example.js Connected! Print Page Previous Next Advertisements ”;

Node & MongoDB – Insert Document

Node & MongoDB – Insert Document ”; Previous Next To insert document(s) in a collection of a database, you can use collection.insertOne() or collection.insertMany() methods to insert one or multiple documents. database.collection(“sampleCollection”).insertOne(firstDocument, function(error, res) { if (error) throw error; console.log(“1 document inserted”); }); database.collection(“sampleCollection”).insertMany(documents, function(error, res) { if (error) throw error; console.log(“Documents inserted: ” + res.insertedCount); }); Example Try the following example to insert documents in a mongodb collection − Copy and paste the following example as mongodb_example.js − const MongoClient = require(”mongodb”).MongoClient; // Prepare URL const url = “mongodb://localhost:27017/”; const firstDocument = { First_Name : ”Mahesh”, Last_Name : ”Parashar”, Date_Of_Birth: ”1990-08-21”, e_mail: ”[email protected]”, phone: ”9034343345” }; const documents = [{ First_Name : ”Radhika”, Last_Name : ”Sharma”, Date_Of_Birth: ”1995-09-26”, e_mail: ”[email protected]”, phone: ”9000012345” }, { First_Name : ”Rachel”, Last_Name : ”Christopher”, Date_Of_Birth: ”1990-02-16”, e_mail: ”[email protected]”, phone: ”9000054321” }, { First_Name : ”Fathima”, Last_Name : ”Sheik”, Date_Of_Birth: ”1990-02-16”, e_mail: ”[email protected]”, phone: ”9000012345” } ]; // make a connection to the database MongoClient.connect(url, function(error, client) { if (error) throw error; console.log(“Connected!”); // Connect to the database const database = client.db(”myDb”); database.collection(“sampleCollection”).insertOne(firstDocument, function(error, res) { if (error) throw error; console.log(“1 document inserted”); }); database.collection(“sampleCollection”).insertMany(documents, function(error, res) { if (error) throw error; console.log(“Documents inserted: ” + res.insertedCount); }); // close the connection client.close(); }); Output Execute the mysql_example.js script using node and verify the output. node mongodb_example.js Documents inserted: 3 1 document inserted Print Page Previous Next Advertisements ”;

Node & MongoDB – Discussion

Discuss Node & MongoDB ”; Previous Next Node based application can connect to MongoDB using Node MongoDB Driver. Node MongoDB Driver works with Node on a variety of platforms, such as Windows, Mac OS, and the various versions of UNIX. Print Page Previous Next Advertisements ”;