Tag Archives: Yosemite
Recently I’ve started developing an app for OS X to automatically download videos’ subtitles (mostly because that app I was using before stopped being free and started asking for 19,99$ to keep using it) and thus had to deal with all the app sandboxing stuff required to be able to publish on the Mac App store.
Therefore I went on the Apple’s developer web site and read all the documentation about app sandboxing… my first reaction has been “screw the Mac App Store, I will distribute my app the dear old way!” but then I realised that if I want to collect the money to get back to WWDC next year the Mac App Store might be of some help.
In my previous post, I displayed a new Core Data feature that allows developers to perform batch updates directly on the Persistent Store. This time, I’m going to show how to perform asynchronous fetches, a feature that developers have desired for a long time, but has finally become available in iOS 8 (and OS X 10.10 Yosemite).
An asynchronous fetch allows developers to execute a fetch request without blocking the Managed Object Context for the duration of the fetch. As an extra feature, the asynchronous fetch is cancelable by the user and provides progress reporting through
When you perform a standard fetch request using the
executeFetchRequest:error: method, the call does not return immediately. Instead, the thread is blocked until the fetch is completed (i.e. the fetched objects populate the Managed Object Context). An asynchronous fetch works differently. Developers perform an asynchronous fetch using the
executeRequest:error: method (the same method used for batch updates). This method immediately returns an
NSAsynchronousFetchResult. Once the fetch is completed, a completion block is executed.
Asynchronous fetches are only supported by Managed Object Contexts using either the
NSPrivateQueueConcurrencyType or the
ConfinementConcurrencyType is not supported). Additionally, in order for the Managed Object Context to be updated at the end of the asynchronous fetch, you must specify it to do so.
Here’s how it works. First, create an
NSFetchRequest as you would do in a standard fetch. You can use sort descriptors and predicates to be more selective on your data. Then, create an
NSAsynchronousFetchRequest using the standard fetch request. After that, pass the asynchronous fetch request to the Managed Object Context executing the
executeRequest:error: method on that context. The context immediately returns an
NSAsynchronousFetchResult. At the same time, the context sends the fetch to the store. Now, you can continue editing that Managed Object Context performing fetches, faults, etc.
NSAsynchronousFetchRequest is a new subclass of
NSPersistentStoreRequest. You can create an
NSAsynchronousFetchRequest instance initializing it with an instance of a
NSFetchRequest and a completion block.
NSAsynchronousFetchResult is a new subclass of
NSPersistentStoreResult. It provides results or errors after the completion. It’s returned immediately by the Managed Object Context when you call
A new breed of editor has arrived. It fills the gaping void between basic text applications (Notepad, TextEdit, gedit, etc.) and full Integrated Development Environments (VisualStudio, Eclipse, NetBeans etc.) Simpler applications lack basic development requirements such as multiple documents, line numbering and code coloring. IDEs tend to be monolithic applications which cater for a specific language, framework or platform.
This review considers sophisticated code editors with the following criteria. All must be:
- Suited to web development
- Cross-platform and work on Windows, Mac and Linux. Your preferences and settings should be available regardless of which OS you’re using.
- Highly customizable with cross-platform plugins and themes.
- Fast and stable. Launching should never be a once-a-day dread like some IDEs.
- Immediately usable without a steep learning curve or having to remember numerous keyboard shortcuts.
At WWDC 2015, Apple announced its first major update to the Apple Watch software, watchOS 2. This new update brought with it many new APIs and features for developers to take advantage of, including native apps, access to more of the Apple Watch’s hardware, and better communication with the parent iOS app.
In this tutorial, I am going to be showing you how to take advantage of another new feature, the ability to create custom watch complications using the ClockKit framework. This tutorial requires that you are running Xcode 7 on OS X Yosemite(10.10) or later.
If you don’t know already, Apple Watch complications are the small interface elements that display information on the watch face.
Mac applications often add their icons to the notification area on the right side of the menu bar. That way they can show you some status changes by changing the icon image, and they can also save some space in your dock by removing the icon from there while still being easily accessible.
Building a native iOS app requires the Xcode integrated development environment (IDE). Sharing code with Xcode is made easy with the inclusion of a Git repository in Xcode projects. In this blog post, I document the basic steps required to integrate a local Git repository created by the Xcode IDE with a Git repository on IBM Bluemix DevOps Services. IBM Bluemix DevOps Services is a Software as a Service (SaaS) offering on the IBM cloud that supports continuous delivery. With IBM Bluemix DevOps Services you can develop, track, plan and deploy software in one place (visit the IBM Bluemix DevOps Services site to learn more).
I recently found myself with some time on my hands and decided to explore iOS app development with the Swift programming language. I created a very simple, getting started iOS app and wanted to share the source for my app using a Git repository provided by IBM Bluemix DevOps Services. I found the initial push of files from Xcode to IBM Bluemix DevOps services failed and set about understanding why. This blog post explains why this initial push fails in the Xcode IDE and how to work around this. I created the app and the steps that follow with Xcode 6.3.1 on OS X Yosemite.