#[repr(C)]pub struct CLSDataStore { /* private fields */ }
CLSDataStore
only.Expand description
The data store maintains and syncs your app’s contexts.
See also Apple’s documentation
Implementations§
Source§impl CLSDataStore
impl CLSDataStore
The data store provides read/write access to your app’s ClassKit data.
Data written to the data store is automatically synced via iCloud across the user’s devices.
Sourcepub unsafe fn mainAppContext(&self) -> Retained<CLSContext>
Available on crate features CLSContext
and CLSObject
only.
pub unsafe fn mainAppContext(&self) -> Retained<CLSContext>
CLSContext
and CLSObject
only.Fetch the top level context for the current app.
The main context is automatically created. Add child contexts to this context to persist them in the data store.
Sourcepub unsafe fn activeContext(&self) -> Option<Retained<CLSContext>>
Available on crate features CLSContext
and CLSObject
only.
pub unsafe fn activeContext(&self) -> Option<Retained<CLSContext>>
CLSContext
and CLSObject
only.Returns the context that is currently active. If no context is active, this will return nil.
Sourcepub unsafe fn runningActivity(&self) -> Option<Retained<CLSActivity>>
Available on crate features CLSActivity
and CLSObject
only.
pub unsafe fn runningActivity(&self) -> Option<Retained<CLSActivity>>
CLSActivity
and CLSObject
only.Returns the most recently started activity that is running.
Sourcepub unsafe fn delegate(
&self,
) -> Option<Retained<ProtocolObject<dyn CLSDataStoreDelegate>>>
pub unsafe fn delegate( &self, ) -> Option<Retained<ProtocolObject<dyn CLSDataStoreDelegate>>>
The data store delegate allows for easy population of the app’s context hierarchy.
Sourcepub unsafe fn setDelegate(
&self,
delegate: Option<&ProtocolObject<dyn CLSDataStoreDelegate>>,
)
pub unsafe fn setDelegate( &self, delegate: Option<&ProtocolObject<dyn CLSDataStoreDelegate>>, )
This is a weak property.
Setter for delegate
.
pub unsafe fn new() -> Retained<Self>
pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>
Sourcepub unsafe fn saveWithCompletion(
&self,
completion: Option<&DynBlock<dyn Fn(*mut NSError)>>,
)
Available on crate feature block2
only.
pub unsafe fn saveWithCompletion( &self, completion: Option<&DynBlock<dyn Fn(*mut NSError)>>, )
block2
only.Save changes made in the data store.
Save new/modified/removed contexts, activities, etc. to the local store. In case of an error -[NSError userInfo] will contain the object that caused the error under the CLSErrorObjectKey..
Sourcepub unsafe fn completeAllAssignedActivitiesMatching(
&self,
context_path: &NSArray<NSString>,
)
pub unsafe fn completeAllAssignedActivitiesMatching( &self, context_path: &NSArray<NSString>, )
Complete all assigned actvities.
Marks all of the currently active assigned activities for this contextPath as complete.
Source§impl CLSDataStore
Contexts.
impl CLSDataStore
Contexts.
Sourcepub unsafe fn contextsMatchingPredicate_completion(
&self,
predicate: &NSPredicate,
completion: &DynBlock<dyn Fn(NonNull<NSArray<CLSContext>>, *mut NSError)>,
)
Available on crate features CLSContext
and CLSObject
and block2
only.
pub unsafe fn contextsMatchingPredicate_completion( &self, predicate: &NSPredicate, completion: &DynBlock<dyn Fn(NonNull<NSArray<CLSContext>>, *mut NSError)>, )
CLSContext
and CLSObject
and block2
only.Fetch contexts matching a predicate.
For example: NSPredicate <topic == CLSContextTopicMath AND parent == someContext>. Completion block may be called on a background thread.
Sourcepub unsafe fn contextsMatchingIdentifierPath_completion(
&self,
identifier_path: &NSArray<NSString>,
completion: &DynBlock<dyn Fn(NonNull<NSArray<CLSContext>>, *mut NSError)>,
)
Available on crate features CLSContext
and CLSObject
and block2
only.
pub unsafe fn contextsMatchingIdentifierPath_completion( &self, identifier_path: &NSArray<NSString>, completion: &DynBlock<dyn Fn(NonNull<NSArray<CLSContext>>, *mut NSError)>, )
CLSContext
and CLSObject
and block2
only.Returns contexts matching a set of identifiers where each identifier is the parent of the following identifier.
For example:
@["math-game",``"level1"]
returns two contexts where
_math-game_is the parent of
_level1._If there are any missing contexts, they will be filled in by calling the following method on the data store’s delegate:
-[CLSDataStoreDelegate createContextForIdentifier:parentContext:parentIdentifierPath:]
If the dataStore does not have a delegate and there are missing contexts then an incomplete list of contexts will be passed to the completion handler. Completion block may be called on a background thread.
Sourcepub unsafe fn removeContext(&self, context: &CLSContext)
Available on crate features CLSContext
and CLSObject
only.
pub unsafe fn removeContext(&self, context: &CLSContext)
CLSContext
and CLSObject
only.Mark a context for removal.
Save to commit removal. Removal cascades and deletes all descendants.
Sourcepub unsafe fn fetchActivityForURL_completion(
&self,
url: &NSURL,
completion: &DynBlock<dyn Fn(*mut CLSActivity, *mut NSError)>,
)
Available on crate features CLSActivity
and CLSObject
and block2
only.
pub unsafe fn fetchActivityForURL_completion( &self, url: &NSURL, completion: &DynBlock<dyn Fn(*mut CLSActivity, *mut NSError)>, )
CLSActivity
and CLSObject
and block2
only.Implement to fetch the current CLSActivity instance for your document to add progress to.
Gets the currently CLSActivity for the file. If no current activity exists, one will be created for you.
Parameter url
: File url for the document.
Methods from Deref<Target = NSObject>§
Sourcepub fn doesNotRecognizeSelector(&self, sel: Sel) -> !
pub fn doesNotRecognizeSelector(&self, sel: Sel) -> !
Handle messages the object doesn’t recognize.
See Apple’s documentation for details.
Methods from Deref<Target = AnyObject>§
Sourcepub fn class(&self) -> &'static AnyClass
pub fn class(&self) -> &'static AnyClass
Dynamically find the class of this object.
§Panics
May panic if the object is invalid (which may be the case for objects
returned from unavailable init
/new
methods).
§Example
Check that an instance of NSObject
has the precise class NSObject
.
use objc2::ClassType;
use objc2::runtime::NSObject;
let obj = NSObject::new();
assert_eq!(obj.class(), NSObject::class());
Sourcepub unsafe fn get_ivar<T>(&self, name: &str) -> &Twhere
T: Encode,
👎Deprecated: this is difficult to use correctly, use Ivar::load
instead.
pub unsafe fn get_ivar<T>(&self, name: &str) -> &Twhere
T: Encode,
Ivar::load
instead.Use Ivar::load
instead.
§Safety
The object must have an instance variable with the given name, and it
must be of type T
.
See Ivar::load_ptr
for details surrounding this.
Sourcepub fn downcast_ref<T>(&self) -> Option<&T>where
T: DowncastTarget,
pub fn downcast_ref<T>(&self) -> Option<&T>where
T: DowncastTarget,
Attempt to downcast the object to a class of type T
.
This is the reference-variant. Use Retained::downcast
if you want
to convert a retained object to another type.
§Mutable classes
Some classes have immutable and mutable variants, such as NSString
and NSMutableString
.
When some Objective-C API signature says it gives you an immutable class, it generally expects you to not mutate that, even though it may technically be mutable “under the hood”.
So using this method to convert a NSString
to a NSMutableString
,
while not unsound, is generally frowned upon unless you created the
string yourself, or the API explicitly documents the string to be
mutable.
See Apple’s documentation on mutability and on
isKindOfClass:
for more details.
§Generic classes
Objective-C generics are called “lightweight generics”, and that’s because they aren’t exposed in the runtime. This makes it impossible to safely downcast to generic collections, so this is disallowed by this method.
You can, however, safely downcast to generic collections where all the
type-parameters are AnyObject
.
§Panics
This works internally by calling isKindOfClass:
. That means that the
object must have the instance method of that name, and an exception
will be thrown (if CoreFoundation is linked) or the process will abort
if that is not the case. In the vast majority of cases, you don’t need
to worry about this, since both root objects NSObject
and
NSProxy
implement this method.
§Examples
Cast an NSString
back and forth from NSObject
.
use objc2::rc::Retained;
use objc2_foundation::{NSObject, NSString};
let obj: Retained<NSObject> = NSString::new().into_super();
let string = obj.downcast_ref::<NSString>().unwrap();
// Or with `downcast`, if we do not need the object afterwards
let string = obj.downcast::<NSString>().unwrap();
Try (and fail) to cast an NSObject
to an NSString
.
use objc2_foundation::{NSObject, NSString};
let obj = NSObject::new();
assert!(obj.downcast_ref::<NSString>().is_none());
Try to cast to an array of strings.
use objc2_foundation::{NSArray, NSObject, NSString};
let arr = NSArray::from_retained_slice(&[NSObject::new()]);
// This is invalid and doesn't type check.
let arr = arr.downcast_ref::<NSArray<NSString>>();
This fails to compile, since it would require enumerating over the array to ensure that each element is of the desired type, which is a performance pitfall.
Downcast when processing each element instead.
use objc2_foundation::{NSArray, NSObject, NSString};
let arr = NSArray::from_retained_slice(&[NSObject::new()]);
for elem in arr {
if let Some(data) = elem.downcast_ref::<NSString>() {
// handle `data`
}
}
Trait Implementations§
Source§impl AsRef<AnyObject> for CLSDataStore
impl AsRef<AnyObject> for CLSDataStore
Source§impl AsRef<CLSDataStore> for CLSDataStore
impl AsRef<CLSDataStore> for CLSDataStore
Source§impl AsRef<NSObject> for CLSDataStore
impl AsRef<NSObject> for CLSDataStore
Source§impl Borrow<AnyObject> for CLSDataStore
impl Borrow<AnyObject> for CLSDataStore
Source§impl Borrow<NSObject> for CLSDataStore
impl Borrow<NSObject> for CLSDataStore
Source§impl ClassType for CLSDataStore
impl ClassType for CLSDataStore
Source§const NAME: &'static str = "CLSDataStore"
const NAME: &'static str = "CLSDataStore"
Source§type ThreadKind = <<CLSDataStore as ClassType>::Super as ClassType>::ThreadKind
type ThreadKind = <<CLSDataStore as ClassType>::Super as ClassType>::ThreadKind
Source§impl Debug for CLSDataStore
impl Debug for CLSDataStore
Source§impl Deref for CLSDataStore
impl Deref for CLSDataStore
Source§impl Hash for CLSDataStore
impl Hash for CLSDataStore
Source§impl Message for CLSDataStore
impl Message for CLSDataStore
Source§impl NSObjectProtocol for CLSDataStore
impl NSObjectProtocol for CLSDataStore
Source§fn isEqual(&self, other: Option<&AnyObject>) -> bool
fn isEqual(&self, other: Option<&AnyObject>) -> bool
Source§fn hash(&self) -> usize
fn hash(&self) -> usize
Source§fn isKindOfClass(&self, cls: &AnyClass) -> bool
fn isKindOfClass(&self, cls: &AnyClass) -> bool
Source§fn is_kind_of<T>(&self) -> bool
fn is_kind_of<T>(&self) -> bool
isKindOfClass
directly, or cast your objects with AnyObject::downcast_ref