{"id":21013786,"url":"https://github.com/pyro2927/parsequickdialog","last_synced_at":"2025-06-20T17:08:54.732Z","repository":{"id":9660623,"uuid":"11599545","full_name":"pyro2927/ParseQuickDialog","owner":"pyro2927","description":"Simple app/library to view Parse classes and objects, leveraging the QuickDialog framework","archived":false,"fork":false,"pushed_at":"2014-01-20T17:43:43.000Z","size":10505,"stargazers_count":9,"open_issues_count":3,"forks_count":3,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-06-19T16:06:34.802Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Objective-C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pyro2927.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-07-23T04:26:18.000Z","updated_at":"2017-06-05T20:02:55.000Z","dependencies_parsed_at":"2022-08-25T23:13:19.069Z","dependency_job_id":null,"html_url":"https://github.com/pyro2927/ParseQuickDialog","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/pyro2927/ParseQuickDialog","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyro2927%2FParseQuickDialog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyro2927%2FParseQuickDialog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyro2927%2FParseQuickDialog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyro2927%2FParseQuickDialog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyro2927","download_url":"https://codeload.github.com/pyro2927/ParseQuickDialog/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyro2927%2FParseQuickDialog/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260985175,"owners_count":23092885,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-19T09:44:11.449Z","updated_at":"2025-06-20T17:08:49.711Z","avatar_url":"https://github.com/pyro2927.png","language":"Objective-C","funding_links":[],"categories":[],"sub_categories":[],"readme":"ParseQuickDialog\n================\n\n### Introduction\nSimple 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.\n\n#### Author\n\n[Joe Pintozzi (pyro2927)](https://github.com/pyro2927)\n\n#### Why?\n\nBackends 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.\n\n### Usage\n\nParseQuickDialog 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.\n\n#### Standalone App\n\nClone 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 `\u003c\u003e`s.  Register your classes with\n\n    [ParseQuickDialog addClasses:@[@\"Class1\", @\"Class2\", @\"Class3\"]];\n    \nBuild/Run the app and you will see a list of your classes.  Tap into these to view existing objects.\n\n#### Installation into Existing App\n\nInstall with [CocoaPods](http://cocoapods.org).  In your Podfile:\n\n    pod 'QuickDialog', :podspec =\u003e \"https://raw.github.com/pyro2927/QuickDialog/parse/QuickDialog.podspec\"\n    pod 'ParseQuickDialog', :git =\u003e \"https://github.com/pyro2927/ParseQuickDialog.git\"\n    \nYou **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.\n\n![](http://i.imgur.com/WtZF62q.png)\n\nSetup the admin view controller with:\n\n    [ParseQuickDialog setApplicationId:@\"\u003cAPP_ID\u003e\" clientKey:@\"\u003cCLIENT_KEY\u003e\"];\n    [ParseQuickDialog addClasses:@[@\"Class1\", @\"Class2\", @\"Class3\"]];\n    ParseClassesViewController *mainAdminViewController = [ParseQuickDialog classesViewController];\n    \nPush `mainAdminViewController` onto a navigation stack, or present any way you like!\n\n#### ViewControllers\n\n##### ParseClassesViewController\n\nThis is the starting point for the admin page.  Shouldn't need to be modified or subclassed.\n\n##### PFObjectListViewController\n\nA 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\n\n    [PFObjectListViewController objectListViewControllerForClassName:className titleKey:titleKey]\n    \n##### ParseObjectViewController\n\nThe meat of this project.  This class is in charge of presenting/updating/saving data for `PFObjects`.  By default, `ParseObjectViewController` will show the `objectId`, `createdAt`, `updatedAt` values, as well as values for any keys that do not have `undefined` values.  `PFObjects` are saved on `viewDidDisappear:`.\n\n### Extending\n\nYou can extend `ParseObjectViewController` to change how a `PFObject` is displayed/edited.  For two minor examples, look at `BooleanElementsViewController.m` and `CapitalKeyParseObjectViewController.m`.\n\n#### Elements\n\n`PFObject` values are edited through `QElements`, elements which then generate the `UITableViewCells` in the dialog.  For a nice overview of the different available elements, check out the sample app in the [QuickDialog repo](https://github.com/escoz/QuickDialog).  Override\n\n    + (QElement*)elementForObject:(PFObject*)parseObject key:(NSString*)attribute\n    \nto use different elements where you see fit.  `BooleanElementsViewController.m`, for example, uses `UISwitches` to set the `NSNumber` for a `PFObject`.\n\n#### Über Admin\n\nIf you don't want to see the `objectId`, `createdAt`, or `updatedAt` values, subclass `ParseObjectViewController` and return `NO` to `+ (BOOL)showsImmutableValues`.\n    \n#### Keys\n\nIf you want to only see a subset of key/values for an object, override\n\n    + (NSArray*)orderedKeysForObject:(PFObject*)parseObject\n\nreturning an ordered `NSArray` of the keys you would like to see.  By default `ParseObjectViewController` returns `[parseObject allKeys]`.\n\n### Data Types\n\n**TODO:** Fill out README with datatypes and how they are presented.\n\n### Notes\n\n#### Limitations\n\nThere are several limitations in the Parse API that translate into limitations with this framework.  They are outlined below.\n\n###### Classes\n\nCurrently all Parse classes seem to be working except for the `User` class.\n\n###### Keys\n\nIn the iOS SDK, `[pfObject allKeys]` only returns keys which do not have `undefined` values assigned to them.  If you are looking to change/set `undefined` values, you'll have to subclass `ParseObjectViewController` and override\n\n    + (NSArray*)orderedKeysForObject:(PFObject*)parseObject\n    \nreturning the ordered list of keys you would like access too.\n\n##### Values\n\n`PFObject` values boil down to several basic classes in iOS.  For example, an integer and boolean on an object will both appear as `NSNumbers` in the iOS SDK, so it is impossible to differentiate between the two without having some sort of context.  Hopefully this can be improved upon going forward, but at times the values will have to be set with basic inputs to account for the potential varying types of data.\n\n\n### Screenshots\n\n![](http://i.imgur.com/TXAP9k3.png)\n\n![](http://i.imgur.com/PJaEpPf.png)\n\n![](http://i.imgur.com/WHCZE6c.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpyro2927%2Fparsequickdialog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpyro2927%2Fparsequickdialog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpyro2927%2Fparsequickdialog/lists"}