<commit_before>ParseQuickDialog
================

### Introduction
Simple app/library to view [Parse](https://parse.com/) classes/objects ([PFObjects](https://parse.com/docs/ios/api/Classes/PFObject.html) in iOS), leveraging the [QuickDialog](https://github.com/escoz/QuickDialog) framework.

#### Author

[<NAME> (pyro2927)](https://github.com/pyro2927)

#### Why?

Backends aren't always the easiest, hence why Parse was originally made.  Fetching/using data from PFObjects is easy, but administering that data isn't.  The goal of this framework is to make admin'ing Parse data as easy as Parse makes running a backend.

### Usage

ParseQuickDialog can be run as a standalone app to administer your data (after adding in your keys), or you can drop it into your app's admin section with a few lines of code.

#### Standalone App

Clone this repo and open up `ParseQuickDialog.xcworkspace`.  Open up `AppDelegate.h` and add in your `APP_ID` and `CLIENT_KEY`.  Take note to also remove the `<>`s.  Register your classes with

    [ParseQuickDialog addClasses:@[@"Class1", @"Class2", @"Class3"]];
    
Build/Run the app and you will see a list of your classes.  Tap into these to view existing objects.

#### Installation into Existing App

Install with [CocoaPods](http://cocoapods.org).  In your Podfile:

    pod 'QuickDialog', :podspec => "https://raw.github.com/pyro2927/QuickDialog/parse/QuickDialog.podspec"
    pod 'ParseQuickDialog', :git => "https://github.com/pyro2927/ParseQuickDialog.git"
    
You **HAVE** to use the `QuickDialog` with the specific podspec because I've had to slightly modify the way values are saved out of elements in order to work with Parse's SDK.  There also seems to be a bug in `CocoaPods` where frameworks aren't linked to dependancies, so you may need to manually go in and link `Parse.framework` (found in Pods/Parse/) to Pod-ParseQuickDialog's build phase.

![](http://i.imgur.com/WtZF62q.png)

Setup the admin view controller with:

    [ParseQuickDialog setApplicationId:@"<APP_ID>" clientKey:@"<CLIENT_KEY>"];
    [ParseQuickDialog addClasses:@[@"Class1", @"Class2", @"Class3"]];
    ParseClassesViewController *mainAdminViewController = [ParseQuickDialog classesViewController];
    
Push `mainAdminViewController` onto a navigation stack, or present any way you like!

#### ViewControllers

##### ParseClassesViewController

This is the starting point for the admin page.  Shouldn't need to be modified or subclassed.

##### PFObjectListViewController

A listing of objects for a particular class.  If provided with a titleKey, this listing will the objects' values for that key, next to their objectId.  This is what is opened when you make a selection in the `ParseClassesViewController`.  You can also create one manually with<commit_msg>Updating README to include URL to CocoaPods bug<commit_after>ParseQuickDialog
================

### Introduction
Simple app/library to view [Parse](https://parse.com/) classes/objects ([PFObjects](https://parse.com/docs/ios/api/Classes/PFObject.html) in iOS), leveraging the [QuickDialog](https://github.com/escoz/QuickDialog) framework.

#### Author

[<NAME> (pyro2927)](https://github.com/pyro2927)

#### Why?

Backends aren't always the easiest, hence why Parse was originally made.  Fetching/using data from PFObjects is easy, but administering that data isn't.  The goal of this framework is to make admin'ing Parse data as easy as Parse makes running a backend.

### Usage

ParseQuickDialog can be run as a standalone app to administer your data (after adding in your keys), or you can drop it into your app's admin section with a few lines of code.

#### Standalone App

Clone this repo and open up `ParseQuickDialog.xcworkspace`.  Open up `AppDelegate.h` and add in your `APP_ID` and `CLIENT_KEY`.  Take note to also remove the `<>`s.  Register your classes with

    [ParseQuickDialog addClasses:@[@"Class1", @"Class2", @"Class3"]];
    
Build/Run the app and you will see a list of your classes.  Tap into these to view existing objects.

#### Installation into Existing App

Install with [CocoaPods](http://cocoapods.org).  In your Podfile:

    pod 'QuickDialog', :podspec => "https://raw.github.com/pyro2927/QuickDialog/parse/QuickDialog.podspec"
    pod 'ParseQuickDialog', :git => "https://github.com/pyro2927/ParseQuickDialog.git"
    
You **HAVE** to use the `QuickDialog` with the specific podspec because I've had to slightly modify the way values are saved out of elements in order to work with Parse's SDK.  There also seems to be a [bug in `CocoaPods`](https://github.com/CocoaPods/Core/issues/24) where frameworks aren't linked to dependancies, so you may need to manually go in and link `Parse.framework` (found in Pods/Parse/) to Pod-ParseQuickDialog's build phase.

![](http://i.imgur.com/WtZF62q.png)

Setup the admin view controller with:

    [ParseQuickDialog setApplicationId:@"<APP_ID>" clientKey:@"<CLIENT_KEY>"];
    [ParseQuickDialog addClasses:@[@"Class1", @"Class2", @"Class3"]];
    ParseClassesViewController *mainAdminViewController = [ParseQuickDialog classesViewController];
    
Push `mainAdminViewController` onto a navigation stack, or present any way you like!

#### ViewControllers

##### ParseClassesViewController

This is the starting point for the admin page.  Shouldn't need to be modified or subclassed.

##### PFObjectListViewController

A listing of objects for a particular class.  If provided with a titleKey, this listing will the objects' values for that key, next to their objectId.  This is what is opened when you make a selection in the `ParseClassesViewController`.  You can also create one manually with
{'fraction_non_alphanumeric': 0.10539345711759505, 'fraction_numerical': 0.008841732979664015, 'mean_word_length': 4.77732379979571, 'pattern_counts': {'":': 0, '<': 11, '<?xml version=': 0, '>': 15, 'https://': 13, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1104638', 'n_tokens_mistral': 1651, 'n_tokens_neox': 1556, 'n_words': 654}