GithubHelp home page GithubHelp logo

nceruchalu / gravvy-ios Goto Github PK

View Code? Open in Web Editor NEW
6.0 3.0 3.0 19.79 MB

Gravvy iOS app: https://itunes.apple.com/us/app/gravvy/id1017480922?mt=8

Objective-C 100.00%
ios video objective-c social-network

gravvy-ios's Introduction

Gravvy

About Gravvy

Author Nnoduka Eruchalu
Date 05/09/2014
Website http://gravvy.nnoduka.com

Software Description

3rd-party Objective-C Modules

Other Libraries

Working with Git Submodules

  • All submodules can be found in the ThirdParty/ directory
  • Clone this project with: git clone --recursive <git repo>
  • Update submodules with git submodule update --remote <Module-Name>

Core Data Design Decisions

Denormalization

Goal is to avoid unnecessary joins (i.e. performance optimization) So the idea here is to store relationship meta information on source such as:

  • count
  • existence
  • aggregate values

This drove the decision to have an unreadMessageCount attribute on the BBTContactConversation NSManagedObject.

Normalization

Goal is to prevent duplication of data. So the idea here is to separate unlike things hence the two NSManagedObjects: GRVVideo and GRVClip linked with the following relationships

  • clip.video <<--> video.clips
  • clip.videoUsingAsLeadClip <--> video.leadClip

Fetch Batch Size

  • On an iPhone only 10 rows are visible
  • So doesn't make sense to fetch every possible object
  • Hence chose to use a fetch batch size of 20

Relationship faulting

  • There are some cases where the master table shows related data, so need the related data now.
  • In these cases prefetch to avoid faulting individually ** so for videos TVC use [request setRelationshipKeypathsForPrefetching: @["owner"]]

Core Data Migration

Lightweight migrations are relatively easy and can be peformed with some simple steps

  • Select Gravvy.xcdatamodeld in Xcode
  • From the menu select Editor > Add Model Version...
  • Leave the version name as is and then click Finish.
  • Select Gravvy.xcdatamodeld again (not Gravvy.xcdatamodel, that's the old version) and this time in the File inspector (View > Utilities > Show File Inspector)
  • In the Model Version section, select the new version name for Current.
  • You should now see a little green circle with a white checkmark badge on the new model version in the Project Navigator (View > Navigators > Show Project Navigator).

Compiling

KeychainItemWrapper

Since the project uses ARC and the KeychainItemWrapper class is not ARC compliant you have to inform the compiler that this class is not an ARC compliant class. You can do this by selecting your target and select the Build Phases tab and add the -fno-objc-arc compiler flag.

gravvy-ios's People

Contributors

nceruchalu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.