#[repr(C)]pub struct HMAccessory { /* private fields */ }HMAccessory only.Expand description
Represent an accessory in the home.
This class represents an accessory in the home. There is a one to one relationship between a physical accessory and an object of this class. An accessory is composed of one or more services.
See also Apple’s documentation
Implementations§
Source§impl HMAccessory
impl HMAccessory
Sourcepub unsafe fn name(&self) -> Retained<NSString>
pub unsafe fn name(&self) -> Retained<NSString>
The name of the accessory.
Returns the accessory’s name that is associated with HomeKit. The initial value is the name provided by the accessory information service of the accessory.
Sourcepub unsafe fn identifier(&self) -> Retained<NSUUID>
👎Deprecated: No longer supported.
pub unsafe fn identifier(&self) -> Retained<NSUUID>
A unique identifier for the accessory.
Use uniqueIdentifier to obtain the identifier for this object.
Sourcepub unsafe fn uniqueIdentifier(&self) -> Retained<NSUUID>
pub unsafe fn uniqueIdentifier(&self) -> Retained<NSUUID>
A unique identifier for the accessory.
Sourcepub unsafe fn delegate(
&self,
) -> Option<Retained<ProtocolObject<dyn HMAccessoryDelegate>>>
pub unsafe fn delegate( &self, ) -> Option<Retained<ProtocolObject<dyn HMAccessoryDelegate>>>
Delegate object that receives updates on the state of the accessory.
Sourcepub unsafe fn setDelegate(
&self,
delegate: Option<&ProtocolObject<dyn HMAccessoryDelegate>>,
)
pub unsafe fn setDelegate( &self, delegate: Option<&ProtocolObject<dyn HMAccessoryDelegate>>, )
This is a weak property.
Setter for delegate.
Sourcepub unsafe fn isReachable(&self) -> bool
pub unsafe fn isReachable(&self) -> bool
TRUE if the accessory is currently reachable, FALSE otherwise.
Sourcepub unsafe fn isBridged(&self) -> bool
pub unsafe fn isBridged(&self) -> bool
This property indicates whether this accessory is behind a bridge. If it is TRUE, the accessory cannot be removed from the home directly. Only the bridge that owns this accessory can be removed and removing the bridge will remove this accessory from the home.
Sourcepub unsafe fn identifiersForBridgedAccessories(
&self,
) -> Option<Retained<NSArray<NSUUID>>>
👎Deprecated: No longer supported.
pub unsafe fn identifiersForBridgedAccessories( &self, ) -> Option<Retained<NSArray<NSUUID>>>
If this accessory is a bridge, this property is an array of NSUUID objects that, each of which represents the ‘uniqueIdentifier’ of the accessory vended by the bridge.
Use uniqueIdentifiersForBridgedAccessories to obtain the identifiers for the bridged accessories.
Sourcepub unsafe fn uniqueIdentifiersForBridgedAccessories(
&self,
) -> Option<Retained<NSArray<NSUUID>>>
pub unsafe fn uniqueIdentifiersForBridgedAccessories( &self, ) -> Option<Retained<NSArray<NSUUID>>>
If this accessory is a bridge, this property is an array of NSUUID objects that, each of which represents the ‘uniqueIdentifier’ of the accessory vended by the bridge.
An accessory can be standalone, a bridge, or hosted behind a bridge.
- A standalone accessory would have its ‘bridged’ property set to FALSE and its ‘uniqueIdentifiersForBridgedAccessories’ property set to nil.
- An accessory that is a bridge would have its ‘bridged’ property set to FALSE, but have a non-empty ‘uniqueIdentifiersForBridgedAccessories’ property.
- An accessory behind a bridge would have its ‘bridged’ property set to TRUE and its ‘uniqueIdentifiersForBridgedAccessories’ property set to nil.
Sourcepub unsafe fn category(&self) -> Retained<HMAccessoryCategory>
Available on crate feature HMAccessoryCategory only.
pub unsafe fn category(&self) -> Retained<HMAccessoryCategory>
HMAccessoryCategory only.Category information for the accessory.
Sourcepub unsafe fn room(&self) -> Option<Retained<HMRoom>>
Available on crate feature HMRoom only.
pub unsafe fn room(&self) -> Option<Retained<HMRoom>>
HMRoom only.Room containing the accessory.
Sourcepub unsafe fn services(&self) -> Retained<NSArray<HMService>>
Available on crate feature HMService only.
pub unsafe fn services(&self) -> Retained<NSArray<HMService>>
HMService only.Array of HMService objects that represent all the services provided by the accessory.
Sourcepub unsafe fn profiles(&self) -> Retained<NSArray<HMAccessoryProfile>>
Available on crate feature HMAccessoryProfile only.
pub unsafe fn profiles(&self) -> Retained<NSArray<HMAccessoryProfile>>
HMAccessoryProfile only.Accessory profiles of the receiver.
Sourcepub unsafe fn manufacturer(&self) -> Option<Retained<NSString>>
pub unsafe fn manufacturer(&self) -> Option<Retained<NSString>>
Manufacturer of the accessory.
Sourcepub unsafe fn firmwareVersion(&self) -> Option<Retained<NSString>>
pub unsafe fn firmwareVersion(&self) -> Option<Retained<NSString>>
Accessory’s firmware version.
Sourcepub unsafe fn supportsIdentify(&self) -> bool
pub unsafe fn supportsIdentify(&self) -> bool
Indicates if the accessory supports the identify action.
Sourcepub unsafe fn matterNodeID(&self) -> Option<Retained<NSNumber>>
pub unsafe fn matterNodeID(&self) -> Option<Retained<NSNumber>>
The node identifier used to identify the device on Apple’s Matter fabric.
Sourcepub unsafe fn updateName_completionHandler(
&self,
name: &NSString,
completion: &Block<dyn Fn(*mut NSError)>,
)
Available on crate feature block2 only.
pub unsafe fn updateName_completionHandler( &self, name: &NSString, completion: &Block<dyn Fn(*mut NSError)>, )
block2 only.This method is used to change the name of the accessory.
Parameter name: New name for the accessory.
The new name is stored in HomeKit and not on the accessory.
Parameter completion: Block that is invoked once the request is processed.
The NSError provides more information on the status of the request, error
will be nil on success.
Sourcepub unsafe fn identifyWithCompletionHandler(
&self,
completion: &Block<dyn Fn(*mut NSError)>,
)
Available on crate feature block2 only.
pub unsafe fn identifyWithCompletionHandler( &self, completion: &Block<dyn Fn(*mut NSError)>, )
block2 only.This method is used to have an accessory identify itself.
Parameter completion: Block that is invoked once the request is processed.
The NSError provides more information on the status of the request, error
will be nil on success.
pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>
Source§impl HMAccessory
Methods declared on superclass NSObject.
impl HMAccessory
Methods declared on superclass NSObject.
Source§impl HMAccessory
Camera.
Category implementing methods related to camera profile.
impl HMAccessory
Camera. Category implementing methods related to camera profile.
Sourcepub unsafe fn cameraProfiles(
&self,
) -> Option<Retained<NSArray<HMCameraProfile>>>
Available on crate features HMAccessory_Camera and HMAccessoryProfile and HMCameraProfile only.
pub unsafe fn cameraProfiles( &self, ) -> Option<Retained<NSArray<HMCameraProfile>>>
HMAccessory_Camera and HMAccessoryProfile and HMCameraProfile only.Returns array of camera profiles implemented by the accessory.
An accessory can contain one or more cameras. Each camera is represented as a an HMCameraProfile object. If the accessory does not contain a camera, this property will be nil.
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.
§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 HMAccessory
impl AsRef<AnyObject> for HMAccessory
Source§impl AsRef<HMAccessory> for HMAccessory
impl AsRef<HMAccessory> for HMAccessory
Source§impl AsRef<NSObject> for HMAccessory
impl AsRef<NSObject> for HMAccessory
Source§impl Borrow<AnyObject> for HMAccessory
impl Borrow<AnyObject> for HMAccessory
Source§impl Borrow<NSObject> for HMAccessory
impl Borrow<NSObject> for HMAccessory
Source§impl ClassType for HMAccessory
impl ClassType for HMAccessory
Source§const NAME: &'static str = "HMAccessory"
const NAME: &'static str = "HMAccessory"
Source§type ThreadKind = <<HMAccessory as ClassType>::Super as ClassType>::ThreadKind
type ThreadKind = <<HMAccessory as ClassType>::Super as ClassType>::ThreadKind
Source§impl Debug for HMAccessory
impl Debug for HMAccessory
Source§impl Deref for HMAccessory
impl Deref for HMAccessory
Source§impl Hash for HMAccessory
impl Hash for HMAccessory
Source§impl Message for HMAccessory
impl Message for HMAccessory
Source§impl NSObjectProtocol for HMAccessory
impl NSObjectProtocol for HMAccessory
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