**Update April, 2015**

[Cocoapods is now supported][1]


 

>   * If you don’t already have a Podfile for your project, create one in
> the project’s root directory. A Podfile is simply a text file named
> Podfile.
>   * Open your Podfile in a text editor and add a pod command that references a Mobile SDK podspec. For example, to add all modules to
> your app, use the following pod command:
>     pod ‘SalesforceMobileSDK-iOS’
>   * Open a Terminal window and run pod install from your project directory.

**Original Answer**

I was looking at doing this recently, but it was for a new app so I ended up just using the create and then reshuffling things to move the login to a different stage in the life cycle etc.

Now I've had some experience with it though, what I'd do is this:

**1:** Create a project using the `forceios` tool

**2:** Copy from that project everything in the Dependencies folder to the existing project (ignore iMag, that's something bespoke to this project).

![Dependencies][2]

**3:** Copy the SalesforceSDKResources bundle, and then merge in the required parts of the Settings bundle. If this isn't customised for your app you can probably just overwrite it.

![Bundles][3]

**4:** Compare the existing project with the `forceios` project to see if there's any frameworks you'll need to add.

**5:** After that you should be in a position to use the SDK. I created a single SalesforceManager class in my project that handles all of the interaction with the SDK:

    @interface SalesforceManager : NSObject <SFAuthenticationManagerDelegate, SFUserAccountManagerDelegate, SFRestDelegate>

For reference, the way I handle initialisation and login is below. Once it's authenticated etc. you'll be able to use it as per the docs, using `[SFRestAPI sharedInstance]`, personally I've found the blocks way of doing things to be far easier to handle than dealing with delegates.

If you get any build errors there's a chance you'll need to add some library search paths etc..


    - (id)init
    {
        self = [super init];
        
        if(self)
        {
            [SFLogger setLogLevel:SFLogLevelDebug];
            
            // These SFAccountManager settings are the minimum required to identify the Connected App.
            [SFUserAccountManager sharedInstance].oauthClientId = RemoteAccessConsumerKey;
            [SFUserAccountManager sharedInstance].oauthCompletionUrl = OAuthRedirectURI;
            [SFUserAccountManager sharedInstance].scopes = [NSSet setWithObjects:@"web", @"api", nil];
            
            // Auth manager delegate, for receiving logout and login host change events.
            [[SFAuthenticationManager sharedManager] addDelegate:self];
            [[SFUserAccountManager sharedInstance] addDelegate:self];
        }
        
        return self;
    }
    
    - (void)attemptLoginOnSuccess:(SFManagerLoginSuccessBlock)successBlock
                    onFailure:(SFManagerLoginFailBlock)failureBlock
    {
        __weak SalesforceManager *weakSelf = self;
        
        self.initialLoginSuccessBlock = ^(SFOAuthInfo *info)
        {
            weakSelf.authenticated = TRUE;
            successBlock();
            
        };
        
        self.initialLoginFailureBlock = ^(SFOAuthInfo *info, NSError *error)
        {
            [[SFAuthenticationManager sharedManager] logout];
            weakSelf.authenticated = FALSE;
            failureBlock();
        };
        
        [[SFAuthenticationManager sharedManager] loginWithCompletion:self.initialLoginSuccessBlock failure:self.initialLoginFailureBlock];
    }


  [1]: https://developer.salesforce.com/blogs/engineering/2015/02/cocoapods-support-comes-mobile-sdk.html
  [2]: https://i.sstatic.net/gPwFT.png
  [3]: https://i.sstatic.net/qgVuH.png