pub struct SRKeyboardMetrics { /* private fields */ }
Expand description
Implementations§
Source§impl SRKeyboardMetrics
impl SRKeyboardMetrics
Sourcepub unsafe fn duration(&self) -> NSTimeInterval
pub unsafe fn duration(&self) -> NSTimeInterval
The duration over which these metrics were calculated
Sourcepub unsafe fn keyboardIdentifier(&self) -> Retained<NSString>
pub unsafe fn keyboardIdentifier(&self) -> Retained<NSString>
The identifier of the keyboard in the keyboard list
Sourcepub unsafe fn width(&self) -> Retained<NSMeasurement<NSUnitLength>>
pub unsafe fn width(&self) -> Retained<NSMeasurement<NSUnitLength>>
The width of the keyboard in mm in the session
Sourcepub unsafe fn height(&self) -> Retained<NSMeasurement<NSUnitLength>>
pub unsafe fn height(&self) -> Retained<NSMeasurement<NSUnitLength>>
The height of the keyboard in mm in the session
Sourcepub unsafe fn inputModes(&self) -> Retained<NSArray<NSString>>
pub unsafe fn inputModes(&self) -> Retained<NSArray<NSString>>
The input modes used during a keyboard session
Sourcepub unsafe fn sessionIdentifiers(&self) -> Retained<NSArray<NSString>>
pub unsafe fn sessionIdentifiers(&self) -> Retained<NSArray<NSString>>
The keyboard session identifiers. These are the identifiers of the keyboard sessions that contributed to keyboard metrics sample to correlate current stream with another stream using the same keyboard session indentifiers
Source§impl SRKeyboardMetrics
Methods declared on superclass NSObject
.
impl SRKeyboardMetrics
Methods declared on superclass NSObject
.
Source§impl SRKeyboardMetrics
ScalarMetrics.
impl SRKeyboardMetrics
ScalarMetrics.
Sourcepub unsafe fn totalWords(&self) -> NSInteger
pub unsafe fn totalWords(&self) -> NSInteger
The total number of words typed during the session
Sourcepub unsafe fn totalAlteredWords(&self) -> NSInteger
pub unsafe fn totalAlteredWords(&self) -> NSInteger
The total number of altered words during the session
Sourcepub unsafe fn totalDrags(&self) -> NSInteger
pub unsafe fn totalDrags(&self) -> NSInteger
The total number of drags during the session
Sourcepub unsafe fn totalDeletes(&self) -> NSInteger
pub unsafe fn totalDeletes(&self) -> NSInteger
The total number of deletes during the session
Sourcepub unsafe fn totalEmojis(&self) -> NSInteger
pub unsafe fn totalEmojis(&self) -> NSInteger
The total number of emojis used during the session
Sourcepub unsafe fn totalPaths(&self) -> NSInteger
pub unsafe fn totalPaths(&self) -> NSInteger
The total number of paths used during the sesion
Sourcepub unsafe fn totalPathTime(&self) -> NSTimeInterval
pub unsafe fn totalPathTime(&self) -> NSTimeInterval
The total time taken to complete paths in the session
Sourcepub unsafe fn totalPathLength(&self) -> Retained<NSMeasurement<NSUnitLength>>
pub unsafe fn totalPathLength(&self) -> Retained<NSMeasurement<NSUnitLength>>
The total length of paths completed in the session
Sourcepub unsafe fn totalAutoCorrections(&self) -> NSInteger
pub unsafe fn totalAutoCorrections(&self) -> NSInteger
The total number of autocorrections in the session
Sourcepub unsafe fn totalSpaceCorrections(&self) -> NSInteger
pub unsafe fn totalSpaceCorrections(&self) -> NSInteger
The total number of space corrections in the session
Sourcepub unsafe fn totalRetroCorrections(&self) -> NSInteger
pub unsafe fn totalRetroCorrections(&self) -> NSInteger
The total number of retro corrections in the session
Sourcepub unsafe fn totalTranspositionCorrections(&self) -> NSInteger
pub unsafe fn totalTranspositionCorrections(&self) -> NSInteger
The total number of transposition corrections in the session
Sourcepub unsafe fn totalInsertKeyCorrections(&self) -> NSInteger
pub unsafe fn totalInsertKeyCorrections(&self) -> NSInteger
The total number of insert key corrections in the session
Sourcepub unsafe fn totalSkipTouchCorrections(&self) -> NSInteger
pub unsafe fn totalSkipTouchCorrections(&self) -> NSInteger
The total number of skip touch corrections in the session
Sourcepub unsafe fn totalNearKeyCorrections(&self) -> NSInteger
pub unsafe fn totalNearKeyCorrections(&self) -> NSInteger
The total number of near key corrections in the session
Sourcepub unsafe fn totalSubstitutionCorrections(&self) -> NSInteger
pub unsafe fn totalSubstitutionCorrections(&self) -> NSInteger
The total number of substitution corrections in the session
Sourcepub unsafe fn totalHitTestCorrections(&self) -> NSInteger
pub unsafe fn totalHitTestCorrections(&self) -> NSInteger
The total number of hit test corrections in the session
Sourcepub unsafe fn totalTypingDuration(&self) -> NSTimeInterval
pub unsafe fn totalTypingDuration(&self) -> NSTimeInterval
The total amount of time typing during the session
Source§impl SRKeyboardMetrics
ProbabilityMetrics.
impl SRKeyboardMetrics
ProbabilityMetrics.
Sourcepub unsafe fn upErrorDistance(
&self,
) -> Retained<SRKeyboardProbabilityMetric<NSUnitLength>>
pub unsafe fn upErrorDistance( &self, ) -> Retained<SRKeyboardProbabilityMetric<NSUnitLength>>
The distance from the touch up to the center of any key
Sourcepub unsafe fn downErrorDistance(
&self,
) -> Retained<SRKeyboardProbabilityMetric<NSUnitLength>>
pub unsafe fn downErrorDistance( &self, ) -> Retained<SRKeyboardProbabilityMetric<NSUnitLength>>
The distance from the touch down to the center of any key
Sourcepub unsafe fn spaceUpErrorDistance(
&self,
) -> Retained<SRKeyboardProbabilityMetric<NSUnitLength>>
pub unsafe fn spaceUpErrorDistance( &self, ) -> Retained<SRKeyboardProbabilityMetric<NSUnitLength>>
The distance from the touch up to the right centroid of the space key
Sourcepub unsafe fn spaceDownErrorDistance(
&self,
) -> Retained<SRKeyboardProbabilityMetric<NSUnitLength>>
pub unsafe fn spaceDownErrorDistance( &self, ) -> Retained<SRKeyboardProbabilityMetric<NSUnitLength>>
The distance from the touch down to the right centroid of the space key
Sourcepub unsafe fn deleteUpErrorDistance(
&self,
) -> Retained<SRKeyboardProbabilityMetric<NSUnitLength>>
pub unsafe fn deleteUpErrorDistance( &self, ) -> Retained<SRKeyboardProbabilityMetric<NSUnitLength>>
The distance from the touch up to the center of the delete key
Sourcepub unsafe fn deleteDownErrorDistance(
&self,
) -> Retained<SRKeyboardProbabilityMetric<NSUnitLength>>
pub unsafe fn deleteDownErrorDistance( &self, ) -> Retained<SRKeyboardProbabilityMetric<NSUnitLength>>
The distance from the touch down to the center of the delete key
Sourcepub unsafe fn shortWordCharKeyUpErrorDistance(
&self,
) -> Retained<SRKeyboardProbabilityMetric<NSUnitLength>>
pub unsafe fn shortWordCharKeyUpErrorDistance( &self, ) -> Retained<SRKeyboardProbabilityMetric<NSUnitLength>>
The distance from the touch up to the center of the intended key of a character in a short word
Sourcepub unsafe fn shortWordCharKeyDownErrorDistance(
&self,
) -> Retained<SRKeyboardProbabilityMetric<NSUnitLength>>
pub unsafe fn shortWordCharKeyDownErrorDistance( &self, ) -> Retained<SRKeyboardProbabilityMetric<NSUnitLength>>
The distance from the touch down to the center of the intended key of a character in a short word
Sourcepub unsafe fn touchDownUp(
&self,
) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
pub unsafe fn touchDownUp( &self, ) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
The duration between touch down to touchup for any key
Sourcepub unsafe fn spaceTouchDownUp(
&self,
) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
pub unsafe fn spaceTouchDownUp( &self, ) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
The duration between touch down and touchup of all space key events in the session.
Sourcepub unsafe fn deleteTouchDownUp(
&self,
) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
pub unsafe fn deleteTouchDownUp( &self, ) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
The duration between touch down and touchup of all delete key events in the session.
Sourcepub unsafe fn shortWordCharKeyTouchDownUp(
&self,
) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
pub unsafe fn shortWordCharKeyTouchDownUp( &self, ) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
The duration between touch down and touchup of all character keys in short words in the session.
Sourcepub unsafe fn touchDownDown(
&self,
) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
pub unsafe fn touchDownDown( &self, ) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
The duration between touch down to touch down for any key
Sourcepub unsafe fn touchUpDown(
&self,
) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
pub unsafe fn touchUpDown( &self, ) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
The duration between touch up and touch down for any key
Sourcepub unsafe fn charKeyToPrediction(
&self,
) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
pub unsafe fn charKeyToPrediction( &self, ) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
The duration between touchup on a character key and touch down on a word in the prediction bar
Sourcepub unsafe fn shortWordCharKeyToCharKey(
&self,
) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
pub unsafe fn shortWordCharKeyToCharKey( &self, ) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
The duration between touchup on a character key and touch down on any sequential character key in a short word
Sourcepub unsafe fn charKeyToAnyTapKey(
&self,
) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
pub unsafe fn charKeyToAnyTapKey( &self, ) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
The duration between touchup on a character key and touch down on the next sequential key (any key)
Sourcepub unsafe fn anyTapToCharKey(
&self,
) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
pub unsafe fn anyTapToCharKey( &self, ) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
The duration between touchup of any key and touch down on a sequential character key
Sourcepub unsafe fn spaceToCharKey(
&self,
) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
pub unsafe fn spaceToCharKey( &self, ) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
The duration between touchup of a space key and touch down of a sequential character key
Sourcepub unsafe fn charKeyToSpaceKey(
&self,
) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
pub unsafe fn charKeyToSpaceKey( &self, ) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
The duration between touchup of a character key and touch down of a sequential space key
Sourcepub unsafe fn spaceToDeleteKey(
&self,
) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
pub unsafe fn spaceToDeleteKey( &self, ) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
The duration between touchup of a space key and touch down of a sequential delete key
Sourcepub unsafe fn deleteToSpaceKey(
&self,
) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
pub unsafe fn deleteToSpaceKey( &self, ) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
The duration between touchup of a delete key and touch down of a sequential space key
Sourcepub unsafe fn spaceToSpaceKey(
&self,
) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
pub unsafe fn spaceToSpaceKey( &self, ) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
The duration between touchup of a space key and touch down of a sequential space key
Sourcepub unsafe fn spaceToShiftKey(
&self,
) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
pub unsafe fn spaceToShiftKey( &self, ) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
The duration between touchup of a space key and touch down of a sequential Shift key
Sourcepub unsafe fn spaceToPlaneChangeKey(
&self,
) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
pub unsafe fn spaceToPlaneChangeKey( &self, ) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
The duration between touchup of a space key and touch down of a sequential plane change key
Sourcepub unsafe fn spaceToPredictionKey(
&self,
) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
pub unsafe fn spaceToPredictionKey( &self, ) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
The duration between touchup on the space key and touch down of a sequential selection from the prediction bar
Sourcepub unsafe fn deleteToCharKey(
&self,
) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
pub unsafe fn deleteToCharKey( &self, ) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
The duration between touchup of a delete key and touch down of a sequential character key
Sourcepub unsafe fn charKeyToDelete(
&self,
) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
pub unsafe fn charKeyToDelete( &self, ) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
The duration between touchup of a character key and touch down of a sequential delete key
Sourcepub unsafe fn deleteToDelete(
&self,
) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
pub unsafe fn deleteToDelete( &self, ) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
The duration between touchup of a delete key and touch down of a sequential delete key
Sourcepub unsafe fn deleteToShiftKey(
&self,
) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
pub unsafe fn deleteToShiftKey( &self, ) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
The duration between touchup of a delete key and touch down of a sequential Shift key
Sourcepub unsafe fn deleteToPlaneChangeKey(
&self,
) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
pub unsafe fn deleteToPlaneChangeKey( &self, ) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
The duration between touchup of a delete key and touch down of a sequential plane change key
Sourcepub unsafe fn anyTapToPlaneChangeKey(
&self,
) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
pub unsafe fn anyTapToPlaneChangeKey( &self, ) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
The duration between touchup of any key and touch down on a plane change key
Sourcepub unsafe fn planeChangeToAnyTap(
&self,
) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
pub unsafe fn planeChangeToAnyTap( &self, ) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
The duration between touchup on a plane change key and touch down on the next sequential key
Sourcepub unsafe fn charKeyToPlaneChangeKey(
&self,
) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
pub unsafe fn charKeyToPlaneChangeKey( &self, ) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
The duration between touchup of a character key and touch down of a sequential plane change key
Sourcepub unsafe fn planeChangeKeyToCharKey(
&self,
) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
pub unsafe fn planeChangeKeyToCharKey( &self, ) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
The duration between touchup of a plane change key and touch down of any key
Sourcepub unsafe fn pathErrorDistanceRatio(&self) -> Retained<NSArray<NSNumber>>
pub unsafe fn pathErrorDistanceRatio(&self) -> Retained<NSArray<NSNumber>>
sample values of the ratio of error distance between intended and actual path
Sourcepub unsafe fn deleteToPath(
&self,
) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
pub unsafe fn deleteToPath( &self, ) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
The duration between touchup of a delete key and touch down of a sequential path
Sourcepub unsafe fn pathToDelete(
&self,
) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
pub unsafe fn pathToDelete( &self, ) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
The duration between touchup of a delete key and touch down of a sequential path (ie. Continuous Path)
Sourcepub unsafe fn spaceToPath(
&self,
) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
pub unsafe fn spaceToPath( &self, ) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
The duration between touchup on the space key and touch down to begin a sequential path
Sourcepub unsafe fn pathToSpace(
&self,
) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
pub unsafe fn pathToSpace( &self, ) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
The duration between touchup of a path and touch down of a sequential space key
Sourcepub unsafe fn pathToPath(
&self,
) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
pub unsafe fn pathToPath( &self, ) -> Retained<SRKeyboardProbabilityMetric<NSUnitDuration>>
The duration between touchup of a path and touch down of a sequential path
Source§impl SRKeyboardMetrics
PositionalMetrics.
impl SRKeyboardMetrics
PositionalMetrics.
Probability metrics for each character in a word in their respective positions (first, second, third, fourth, fifth, and the rest)
Sourcepub unsafe fn longWordUpErrorDistance(
&self,
) -> Retained<NSArray<SRKeyboardProbabilityMetric<NSUnitLength>>>
pub unsafe fn longWordUpErrorDistance( &self, ) -> Retained<NSArray<SRKeyboardProbabilityMetric<NSUnitLength>>>
The distance from the touch up to the center of the intended key of the characters of a long word
Sourcepub unsafe fn longWordDownErrorDistance(
&self,
) -> Retained<NSArray<SRKeyboardProbabilityMetric<NSUnitLength>>>
pub unsafe fn longWordDownErrorDistance( &self, ) -> Retained<NSArray<SRKeyboardProbabilityMetric<NSUnitLength>>>
The distance from the touch down to the center of the intended key of the characters of a long word
Sourcepub unsafe fn longWordTouchDownUp(
&self,
) -> Retained<NSArray<SRKeyboardProbabilityMetric<NSUnitDuration>>>
pub unsafe fn longWordTouchDownUp( &self, ) -> Retained<NSArray<SRKeyboardProbabilityMetric<NSUnitDuration>>>
The duration between touch down and touchup of the character keys of all the long words in the session.
Sourcepub unsafe fn longWordTouchDownDown(
&self,
) -> Retained<NSArray<SRKeyboardProbabilityMetric<NSUnitDuration>>>
pub unsafe fn longWordTouchDownDown( &self, ) -> Retained<NSArray<SRKeyboardProbabilityMetric<NSUnitDuration>>>
The duration between touch down and touch down of the character keys of all the long words in the session.
Sourcepub unsafe fn longWordTouchUpDown(
&self,
) -> Retained<NSArray<SRKeyboardProbabilityMetric<NSUnitDuration>>>
pub unsafe fn longWordTouchUpDown( &self, ) -> Retained<NSArray<SRKeyboardProbabilityMetric<NSUnitDuration>>>
The duration between touch up and touch down of the character keys of all the long words in the session.
Sourcepub unsafe fn deleteToDeletes(
&self,
) -> Retained<NSArray<SRKeyboardProbabilityMetric<NSUnitDuration>>>
pub unsafe fn deleteToDeletes( &self, ) -> Retained<NSArray<SRKeyboardProbabilityMetric<NSUnitDuration>>>
The duration between touchup of the delete key and touch down of a sequential delete key
Source§impl SRKeyboardMetrics
SpeedMetrics.
impl SRKeyboardMetrics
SpeedMetrics.
Sourcepub unsafe fn totalPauses(&self) -> NSInteger
pub unsafe fn totalPauses(&self) -> NSInteger
The total number of pauses during the session
Sourcepub unsafe fn totalPathPauses(&self) -> NSInteger
pub unsafe fn totalPathPauses(&self) -> NSInteger
The total number of pauses made while entering the path for any words composed using continuous path during the session
Sourcepub unsafe fn typingSpeed(&self) -> c_double
pub unsafe fn typingSpeed(&self) -> c_double
The words per minute typed during the session
Sourcepub unsafe fn pathTypingSpeed(&self) -> c_double
pub unsafe fn pathTypingSpeed(&self) -> c_double
The words per minute typed using continuous path during the session
Sourcepub unsafe fn totalTypingEpisodes(&self) -> NSInteger
pub unsafe fn totalTypingEpisodes(&self) -> NSInteger
Total number of continuous typing episodes during the session
Source§impl SRKeyboardMetrics
SentimentCounts.
impl SRKeyboardMetrics
SentimentCounts.
These metrics describe the number of words and emoji of a particular category typed during a keyboard session. Words and emoji may be counted in multiple categories.
Sourcepub unsafe fn wordCountForSentimentCategory(
&self,
category: SRKeyboardMetricsSentimentCategory,
) -> NSInteger
pub unsafe fn wordCountForSentimentCategory( &self, category: SRKeyboardMetricsSentimentCategory, ) -> NSInteger
The count of words typed per category in the session
Sourcepub unsafe fn emojiCountForSentimentCategory(
&self,
category: SRKeyboardMetricsSentimentCategory,
) -> NSInteger
pub unsafe fn emojiCountForSentimentCategory( &self, category: SRKeyboardMetricsSentimentCategory, ) -> NSInteger
The count of emoji typed per category in the session
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 SRKeyboardMetrics
impl AsRef<AnyObject> for SRKeyboardMetrics
Source§impl AsRef<NSObject> for SRKeyboardMetrics
impl AsRef<NSObject> for SRKeyboardMetrics
Source§impl AsRef<SRKeyboardMetrics> for SRKeyboardMetrics
impl AsRef<SRKeyboardMetrics> for SRKeyboardMetrics
Source§impl Borrow<AnyObject> for SRKeyboardMetrics
impl Borrow<AnyObject> for SRKeyboardMetrics
Source§impl Borrow<NSObject> for SRKeyboardMetrics
impl Borrow<NSObject> for SRKeyboardMetrics
Source§impl ClassType for SRKeyboardMetrics
impl ClassType for SRKeyboardMetrics
Source§const NAME: &'static str = "SRKeyboardMetrics"
const NAME: &'static str = "SRKeyboardMetrics"
Source§type ThreadKind = <<SRKeyboardMetrics as ClassType>::Super as ClassType>::ThreadKind
type ThreadKind = <<SRKeyboardMetrics as ClassType>::Super as ClassType>::ThreadKind
Source§impl Debug for SRKeyboardMetrics
impl Debug for SRKeyboardMetrics
Source§impl Deref for SRKeyboardMetrics
impl Deref for SRKeyboardMetrics
Source§impl Hash for SRKeyboardMetrics
impl Hash for SRKeyboardMetrics
Source§impl Message for SRKeyboardMetrics
impl Message for SRKeyboardMetrics
Source§impl NSObjectProtocol for SRKeyboardMetrics
impl NSObjectProtocol for SRKeyboardMetrics
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