Here is my attempt in Swift. However I cannot get the newFetchResultsController, thus cannot complete rest. Is this the right way of setting a property in swift ? How can I do the same principle as above shown in Objective C in Swift?

UPD:
Today with Swift 3.0 your logic can be reimplemented, you may have single plain stored property with only didSet value observer specified like this:

var fetchedResultsController:NSFetchedResultsController? {
didSet(oldfetchResultsController) {
// If value BEFORE it was set is not identical to value AFTER it was set.
if oldfetchResultsController !== fetchedResultsController {
// Let's assume there is such method.
if fetchedResultsController.isBadAndNotSuitable == false {
// Do your stuff here.
} else {
// If you want to override value that was set
// without observers being called, you can just set
// your property inside didSet like:
fetchedResultsController = nil
// Or, if you don't want to change value:
fetchedResultsController = oldFetchedResultsController
// this won't cause willSet to fire and your property
// will preserve its value.
}
}
}
}