Skip to content

Instantly share code, notes, and snippets.

View lemonkey's full-sized avatar
🏠
Working from home

Ari Braginsky lemonkey

🏠
Working from home
View GitHub Profile
@kristopherjohnson
kristopherjohnson / Stopwatch.swift
Last active July 13, 2022 11:24
Swift classes for calculating elapsed time, similar to .NET's System.Diagnostics.Stopwatch class
// Copyright (c) 2017 Kristopher Johnson
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
@quellish
quellish / property.m
Created September 29, 2014 07:46
Managed object property access
[[managedObject managedObjectContext] performBlock:^{
NSString *value = [managedObject someValue];
[NSOperationQueue mainQueue] addOperationWithBlock:^{
[[self label] setText:value];
}];
}];
@quellish
quellish / saveManagedObjectContext.m
Created September 29, 2014 07:45
Recursive save of managed object context
- (void) saveManagedObjectContext:(NSManagedObjectContext *)managedObjectContext withCompletion::(void (^)(BOOL, NSError *))completio{
managedObjectContext performBlock:^{
NSError *error = nil;
if (![managedObjectContext save:&error]){
completion(NO, error);
} else {
if ([managedObjectContext parentContext] != nil){
[self saveManagedObjectContext:[managedObjectContext parentContext] withCompletion:completion];
} else {
@quellish
quellish / save.m
Created September 29, 2014 07:43
Save
[managedObjectContext performBlock:^{
NSError *error = nil;
if (![managedObjectContext save:&error]){
[self handleError:error];
}
}];
@quellish
quellish / allPeopleInManagedObjectContext.m
Created September 29, 2014 07:42
allPeopleInManagedObjectContext
- (void) allPeopleInManagedObjectContext:(NSManagedObjectContext *)managedObjectContext withCompletion:(void (^)(NSArray*, NSError*))completion {
[managedObjectContext performBlock:^{
NSError *error = nil;
NSArray *results = nil;
NSFetchRequest *fetchRequest = nil;
NSPredicate *predicate = nil;
NSEntityDescription *entity = nil;
fetchRequest = [[NSFetchRequest alloc] init];
entity = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:context];
@cabeca
cabeca / simulator_populator
Created September 23, 2014 21:30
This script removes and recreates all simulators in Xcode 6.
#!/usr/bin/env ruby
device_types_output = `xcrun simctl list devicetypes`
device_types = device_types_output.scan /(.*) \((.*)\)/
runtimes_output = `xcrun simctl list runtimes`
runtimes = runtimes_output.scan /(.*) \(.*\) \((com.apple[^)]+)\)$/
devices_output = `xcrun simctl list devices`
devices = devices_output.scan /\s\s\s\s(.*) \(([^)]+)\) (.*)/
@quellish
quellish / JSONCoreData.m
Created September 21, 2014 08:47
Assigning JSON values to a Core Data Managed Object
NSEntityDescription *entityDescription = nil;
NSArray *attributeNames = nil;
NSDictionary *mappedValues = nil;
entityDescription = [managedObject entity];
attributeNames = [[entity attributesByName] allKeys];
mappedValues = [jsonObject dictionaryWithValuesForKeys:attributeKeys];
[managedObject setValuesForKeysWithDictionary:mappedValues];
@quellish
quellish / waitForBlock.m
Created August 9, 2014 20:09
Pseudo-sample of synchronous use of Core Data performBlock: using dispatch group
group = dispatch_group_create();
dispatch_group_enter(group);
[context performBlock:^{
result = [context executeFetch:...
dispatch_group_leave(group);
}];
groupResult = dispatch_group_wait(group, DISPATCH_TIME_FOREVER);
@quellish
quellish / fetchThingsWithCompletion.m
Created August 9, 2014 20:07
Pseudo-sample of a core data fetch with a completion block.
- (void) fetchThingsWithCompletion:(void (^)(NSArray *, NSError *))completion{
[context performBlock:^{
result = [context executeFetch:...
if (completion != nil){
completion(result, error);
}
}];
}
/*
Some syntactic sugar for dealing with Time in Swift
Examples:
3.days.inHours
3.6.hours.ago
12.hours.inDays
*/