How can I Quick Look custom objects with Xcode 5 visual debugger?
ios, objective-c, quicklook, xcode, xcode5
Solution
This is a new feature in Xcode 5.1, and the documentation on it can be found here. In a nutshell, you override `-(id)debugQuickLookObject` and return an OS type that already supports Quick Look, e.g. UIImage or NSAttributedString (full list of types in documentation):
- (id)debugQuickLookObject
{
UIImage *image = [...];
// Drawing code here
return image;
}
For Swift:
There are a few options as of writing, none ideal:
- Conform to CustomPlaygroundQuickLookable, but that only works in Playgrounds (and requires Xcode 7/Swift 2).
- Use the same method as for Objective C. This requires your class to be marked @objc (or inherit a Objective-C class) as the caller relies on selectors.
- Conform to Reflectable, but that requires you to provide a full custom MirrorType with a bunch of other properties along with the QuickLookObject (and doesn't even seem to work as of Xcode 7?)
Problem
Xcode 5 has a great new feature where you can hover over a variable name and get a visual representation of a UIColor, UIImage, or even UIBezierPath. I vaguely remember a comment at WWDC where developers could either conform to some protocol or override some methods on any NSObject subclass in order to participate in this new debugging feature. I would love to add this to a bunch of my model objects to help me debug. Anyone know whether this is a real thing yet, or even if they hinted at it in a future release? Unfortunately, Apple refers to this feature as "Quick Look" and since they have another technology called "Quick Look" my search results are very noisy and I can't find anything helpful.