RBQSafeRealmObject 1.1

RBQSafeRealmObject 1.1

TestsTested
LangLanguage Obj-CObjective C
License MIT
ReleasedLast Release Dec 2016

Maintained by Adam Fish, Ben Chatelain.



 
Depends on:
Realm>= 0.99.1
RealmUtilities>= 0.2.1
 

Thread-Safe Representation Of A Realm Object

This class allows you to create a thread-safe representation of a given RLMObject subclass. For example, this enables performing queries on a background thread, and passing results as RBQSafeRealmObject to the main-thread for display.

Note: It will only work with an RLMObject that has a primary key.

Both an Objective-C and Swift version are availble. Swift 2.0 support added in version 0.4.

How To Use

Objective-C

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
    RLMObjectSubclass *anObject = [RLMObjectSubclass objectForPrimaryKey:@"key"];

    RBQSafeRealmObject *safeObject = [RBQSafeRealmObject safeObjectFromObject:anObject];

    dispatch_async(dispatch_get_main_queue(), ^{
        RLMObjectSubclass *mainThreadObject = [safeObject RLMObject];

        // Do Something...
    });
});

Swift 3

DispatchQueue.global().async {
    let anObject = Object()

    let safeObject = SafeObject(object: anObject)

    DispatchQueue.main.async {
        let mainThreadObject = safeObject.object()
    }
}

Installation

RBQSafeRealmObject is available through CocoaPods. To install it, simply add the following line to your Podfile:

Objective-C

pod "RBQSafeRealmObject"

Swift

pod "SafeRealmObject"

CocoaPod Linting

Linting using CocoaPods 1.1.0.rc.2 (with Xcode 8 fixes) needs FORK_XCODE_WRITING to be set to get the build to work. One warning comes through from Realm core.

FORK_XCODE_WRITING=true pod lib lint SafeRealmObject.podspec --allow-warnings