Skip to main content
7 of 21
added 162 characters in body
Dave DeLong
  • 5.3k
  • 1
  • 17
  • 12

StackKit: an API framework for Cocoa

StackKit

StackKit is a library for accessing the Stack Exchange API from within Cocoa/Cocoa Touch applications. It is heavily modeled after Core Data and behaves very similarly.

Sample Code

Using StackKit relies upon creating an SKSite object:

SKSite * stackOverflow = [SKSite siteWithAPIURL:[NSURL URLWithString:@"http://api.stackoverflow.com"]];

Sites can also be discovered via the StackAuth API, like so:

NSArray * knownSites = [SKSite knownSites]; //returns an array of SKSite objects

Requesting information can be done via an SKFetchRequest object (nearly identical to an NSFetchRequest):

SKFetchRequest * request = [[SKFetchRequest alloc] init];

//The kind of object you want to request:
[request setEntity:[SKUser class]];

//The predicate to limit the results.  This particular predicate will fetch one user with the id "115730"
[request setPredicate:[NSPredicate predicateWithFormat:@"%K = %d", SKUserID, 115730]];

Once you've created your fetch request, there are two ways you can execute it: synchronously (which will block the calling thread) or asynchronously (which won't block the thread).

Synchronous:

NSError * error = nil;
NSArray * results = [stackOverflow executeSynchronousFetchRequest:request error:&error];

If the request was successful, then results will contain one or more SKUser objects (depending on the predicate). If there was an error with the request, then the NSError object will be filled in with appropriate information and results will be nil.

Asynchronous:

[request setDelegate:self];  //self must conform to the <SKFetchRequestDelegate> protocol
[stackOverflow executeFetchRequest:request];

When the request finishes, it will invoke one of:

- (void) fetchRequest:(SKFetchRequest *)request didReturnResults:(NSArray *)results;
- (void) fetchRequest:(SKFetchRequest *)request didFailWithError:(NSError *)error;

About

StackKit is being developed by myself (Dave DeLong), with assistance from Perspx, Can Berk Güder, and Brock Woolf. It is currently in active development, and not all features may be working yet. :)

License

StackKit is available under the MIT license.

Platforms

StackKit is being developed as a Mac framework (compatible with both 10.5 and 10.6) and as an iPhone/iPad static library. Two project files are included in the source: one for the Mac framework, and the other for the static library.

Contributing

If you'd like to contribute, please visit http://stackkit.com. If you can't contribute time, you could consider donating via our Pledgie account to further incentivize us to keep working on it.

Dave DeLong
  • 5.3k
  • 1
  • 17
  • 12