ITLibMediaItem

Struct ITLibMediaItem 

Source
pub struct ITLibMediaItem { /* private fields */ }
Available on crate features ITLibMediaEntity and ITLibMediaItem only.
Expand description

A media item represents a single piece of media (such as a song, a video, a podcast, etc) in the iTunes library. A media item has an overall unique identifier, accessed using the persistentID property. The media item metadata may be accessed through its individual properties or via the ITLibMediaEntity general property accessor methods.

See also Apple’s documentation

Implementations§

Source§

impl ITLibMediaItem

Source

pub unsafe fn title(&self) -> Retained<NSString>

The title of this media item. May be empty.

Source

pub unsafe fn sortTitle(&self) -> Option<Retained<NSString>>

The title of this media item that should be used for sorting purposes. If nil, use the title field.

Source

pub unsafe fn artist(&self) -> Option<Retained<ITLibArtist>>

Available on crate feature ITLibArtist only.

The artist associated with this media item.

Source

pub unsafe fn composer(&self) -> Retained<NSString>

The name of the composer associated with this media item. May be empty.

Source

pub unsafe fn sortComposer(&self) -> Option<Retained<NSString>>

The name of the composer associated with this media item that should be used for sorting purposes. If nil, use the composer field.

Source

pub unsafe fn rating(&self) -> NSInteger

The rating of this media item.

Source

pub unsafe fn isRatingComputed(&self) -> bool

Whether this media item’s rating is computed.

Source

pub unsafe fn startTime(&self) -> NSUInteger

If non-zero, the actual time playback for this media item will start instead of 0:00 (in milliseconds).

Source

pub unsafe fn stopTime(&self) -> NSUInteger

If non-zero, the actual time playback for this media item will stop vs. the total time (in milliseconds).

Source

pub unsafe fn album(&self) -> Retained<ITLibAlbum>

Available on crate feature ITLibAlbum only.

The album where this media item belongs.

Source

pub unsafe fn genre(&self) -> Retained<NSString>

The genre associated with this media item. May be empty.

Source

pub unsafe fn kind(&self) -> Option<Retained<NSString>>

This media item’s file kind (ex. MPEG audio file).

Source

pub unsafe fn mediaKind(&self) -> ITLibMediaItemMediaKind

This media item’s media kind.

Source

pub unsafe fn fileSize(&self) -> c_ulonglong

The size in bytes of this media item on disk.

Source

pub unsafe fn size(&self) -> NSUInteger

👎Deprecated

The size in bytes of this media item on disk. (deprecated: use fileSize instead)

Source

pub unsafe fn totalTime(&self) -> NSUInteger

The length of this media item in milliseconds.

Source

pub unsafe fn trackNumber(&self) -> NSUInteger

The position of this media item within its album.

Source

pub unsafe fn category(&self) -> Option<Retained<NSString>>

The podcast category of this media item (implies this media item is a podcast).

Source

pub unsafe fn description(&self) -> Option<Retained<NSString>>

Any podcast description of with this media item (implies this media item is a podcast).

Source

pub unsafe fn lyricsContentRating(&self) -> ITLibMediaItemLyricsContentRating

The content rating of this media item’s lyrics.

Source

pub unsafe fn contentRating(&self) -> Option<Retained<NSString>>

The extended content rating of this media item.

Source

pub unsafe fn modifiedDate(&self) -> Option<Retained<NSDate>>

The date and time this media item was last modified.

Source

pub unsafe fn addedDate(&self) -> Option<Retained<NSDate>>

The date and media item this media item was added to the iTunes database.

Source

pub unsafe fn bitrate(&self) -> NSUInteger

The bitrate of this media item in kbps.

Source

pub unsafe fn sampleRate(&self) -> NSUInteger

The sample rate of this media item in samples per second.

Source

pub unsafe fn beatsPerMinute(&self) -> NSUInteger

The BPM (beats per minute) of this media item.

Source

pub unsafe fn playCount(&self) -> NSUInteger

The number of times this media item has been played in iTunes.

Source

pub unsafe fn lastPlayedDate(&self) -> Option<Retained<NSDate>>

The date and time this media item was last played in iTunes, or nil if this media item has not been played.

Source

pub unsafe fn playStatus(&self) -> ITLibMediaItemPlayStatus

The play status for this media. Represents partially played and unplayed states for videos and podcasts. Other media kinds always return “none”.

Source

pub unsafe fn location(&self) -> Option<Retained<NSURL>>

The location of this media item on disk.

Source

pub unsafe fn hasArtworkAvailable(&self) -> bool

Whether this media item has artwork.

Source

pub unsafe fn artwork(&self) -> Option<Retained<ITLibArtwork>>

Available on crate feature ITLibArtwork only.

Whether this media item has artwork.

Source

pub unsafe fn comments(&self) -> Option<Retained<NSString>>

Any comments associated with this media item.

Source

pub unsafe fn isPurchased(&self) -> bool

Whether this media item was purchased.

Source

pub unsafe fn isCloud(&self) -> bool

Whether this media item is iTunes Match or iTunes in the Cloud.

Source

pub unsafe fn isDRMProtected(&self) -> bool

Whether this media item is DRM protected.

Source

pub unsafe fn isVideo(&self) -> bool

Whether this media item is a video media item (video podcast, movie, etc).

Source

pub unsafe fn videoInfo(&self) -> Option<Retained<ITLibMediaItemVideoInfo>>

Available on crate feature ITLibMediaItemVideoInfo only.

The video information of this media item (implies this media item is a video media item).

Source

pub unsafe fn releaseDate(&self) -> Option<Retained<NSDate>>

The date this media item was released.

Source

pub unsafe fn year(&self) -> NSUInteger

The year when this media item was released.

Source

pub unsafe fn fileType(&self) -> NSUInteger

👎Deprecated

The type of the file this media item refers to.

Source

pub unsafe fn skipCount(&self) -> NSUInteger

The number of times this media item has been skiped.

Source

pub unsafe fn skipDate(&self) -> Option<Retained<NSDate>>

The date and time when this media item was last skipped.

Source

pub unsafe fn voiceOverLanguage(&self) -> Option<Retained<NSString>>

👎Deprecated

The voice-over language of this media item

Source

pub unsafe fn volumeAdjustment(&self) -> NSInteger

The volume adjustment used for this media item if any.

Source

pub unsafe fn volumeNormalizationEnergy(&self) -> NSUInteger

The volume normalization energy applied to this media item.

Source

pub unsafe fn isUserDisabled(&self) -> bool

Whether the user has disabled this media item.

Source

pub unsafe fn grouping(&self) -> Option<Retained<NSString>>

The grouping of this media item.

Source

pub unsafe fn locationType(&self) -> ITLibMediaItemLocationType

The type of this media item with respect to its location.

Source§

impl ITLibMediaItem

Methods declared on superclass NSObject.

Source

pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>

Source

pub unsafe fn new() -> Retained<Self>

Methods from Deref<Target = ITLibMediaEntity>§

Source

pub unsafe fn persistentID(&self) -> Retained<NSNumber>

The unique identifier of this media entity.

Source

pub unsafe fn valueForProperty( &self, property: &NSString, ) -> Option<Retained<AnyObject>>

Gets the value for a specified media property key.

The media property keys you can use with this property are listed in this document and in Media Item Property Keys and Playlist Property Keys.

Parameter property: The media property key that you want the corresponding value of.

Returns: The value for the media property key.

Source

pub unsafe fn enumerateValuesForProperties_usingBlock( &self, properties: Option<&NSSet<NSString>>, block: &DynBlock<dyn Fn(NonNull<NSString>, NonNull<AnyObject>, NonNull<Bool>)>, )

Available on crate feature block2 only.

Executes a provided block with the fetched values for the given item properties.

Use this method to get property values in a batch fashion. In some cases, enumerating over a set of property keys can be more efficient than fetching each individual property with valueForProperty:. The media property keys you can use with this property are listed in this document and in Media Item Property Keys and Playlist Property Keys.

Parameter properties: A set of keys for the properties that will be enumerated, or nil to enumerate all properties.

Parameter block: A block object that executes for each property in the properties set.

Source

pub unsafe fn enumerateValuesExceptForProperties_usingBlock( &self, properties: Option<&NSSet<NSString>>, block: &DynBlock<dyn Fn(NonNull<NSString>, NonNull<AnyObject>, NonNull<Bool>)>, )

Available on crate feature block2 only.

Executes a provided block with the fetched values for all properties in the entity except for the provided set.

Use this method to get property values in a batch fashion. In some cases, enumerating over a set of property keys can be more efficient than fetching each individual property with valueForProperty:. The media property keys you can use with this property are listed in this document and in Media Item Property Keys and Playlist Property Keys.

Parameter properties: A set of property keys that should NOT be enumerated, or nil to enumerate all properties.

Parameter block: A block object that executes for each property except for the ones in the properties set.

Methods from Deref<Target = NSObject>§

Source

pub fn doesNotRecognizeSelector(&self, sel: Sel) -> !

Handle messages the object doesn’t recognize.

See Apple’s documentation for details.

Methods from Deref<Target = AnyObject>§

Source

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());
Source

pub unsafe fn get_ivar<T>(&self, name: &str) -> &T
where T: Encode,

👎Deprecated: this is difficult to use correctly, use 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.

Source

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 ITLibMediaItem

Source§

fn as_ref(&self) -> &AnyObject

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl AsRef<ITLibMediaEntity> for ITLibMediaItem

Source§

fn as_ref(&self) -> &ITLibMediaEntity

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl AsRef<ITLibMediaItem> for ITLibMediaItem

Source§

fn as_ref(&self) -> &Self

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl AsRef<NSObject> for ITLibMediaItem

Source§

fn as_ref(&self) -> &NSObject

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl Borrow<AnyObject> for ITLibMediaItem

Source§

fn borrow(&self) -> &AnyObject

Immutably borrows from an owned value. Read more
Source§

impl Borrow<ITLibMediaEntity> for ITLibMediaItem

Source§

fn borrow(&self) -> &ITLibMediaEntity

Immutably borrows from an owned value. Read more
Source§

impl Borrow<NSObject> for ITLibMediaItem

Source§

fn borrow(&self) -> &NSObject

Immutably borrows from an owned value. Read more
Source§

impl ClassType for ITLibMediaItem

Source§

const NAME: &'static str = "ITLibMediaItem"

The name of the Objective-C class that this type represents. Read more
Source§

type Super = ITLibMediaEntity

The superclass of this class. Read more
Source§

type ThreadKind = <<ITLibMediaItem as ClassType>::Super as ClassType>::ThreadKind

Whether the type can be used from any thread, or from only the main thread. Read more
Source§

fn class() -> &'static AnyClass

Get a reference to the Objective-C class that this type represents. Read more
Source§

fn as_super(&self) -> &Self::Super

Get an immutable reference to the superclass.
Source§

impl Debug for ITLibMediaItem

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Deref for ITLibMediaItem

Source§

type Target = ITLibMediaEntity

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl Hash for ITLibMediaItem

Source§

fn hash<H: Hasher>(&self, state: &mut H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl Message for ITLibMediaItem

Source§

fn retain(&self) -> Retained<Self>
where Self: Sized,

Increment the reference count of the receiver. Read more
Source§

impl NSObjectProtocol for ITLibMediaItem

Source§

fn isEqual(&self, other: Option<&AnyObject>) -> bool
where Self: Sized + Message,

Check whether the object is equal to an arbitrary other object. Read more
Source§

fn hash(&self) -> usize
where Self: Sized + Message,

An integer that can be used as a table address in a hash table structure. Read more
Source§

fn isKindOfClass(&self, cls: &AnyClass) -> bool
where Self: Sized + Message,

Check if the object is an instance of the class, or one of its subclasses. Read more
Source§

fn is_kind_of<T>(&self) -> bool
where T: ClassType, Self: Sized + Message,

👎Deprecated: use isKindOfClass directly, or cast your objects with AnyObject::downcast_ref
Check if the object is an instance of the class type, or one of its subclasses. Read more
Source§

fn isMemberOfClass(&self, cls: &AnyClass) -> bool
where Self: Sized + Message,

Check if the object is an instance of a specific class, without checking subclasses. Read more
Source§

fn respondsToSelector(&self, aSelector: Sel) -> bool
where Self: Sized + Message,

Check whether the object implements or inherits a method with the given selector. Read more
Source§

fn conformsToProtocol(&self, aProtocol: &AnyProtocol) -> bool
where Self: Sized + Message,

Check whether the object conforms to a given protocol. Read more
Source§

fn description(&self) -> Retained<NSObject>
where Self: Sized + Message,

A textual representation of the object. Read more
Source§

fn debugDescription(&self) -> Retained<NSObject>
where Self: Sized + Message,

A textual representation of the object to use when debugging. Read more
Source§

fn isProxy(&self) -> bool
where Self: Sized + Message,

Check whether the receiver is a subclass of the NSProxy root class instead of the usual NSObject. Read more
Source§

fn retainCount(&self) -> usize
where Self: Sized + Message,

The reference count of the object. Read more
Source§

impl PartialEq for ITLibMediaItem

Source§

fn eq(&self, other: &Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl RefEncode for ITLibMediaItem

Source§

const ENCODING_REF: Encoding = <ITLibMediaEntity as ::objc2::RefEncode>::ENCODING_REF

The Objective-C type-encoding for a reference of this type. Read more
Source§

impl DowncastTarget for ITLibMediaItem

Source§

impl Eq for ITLibMediaItem

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<'a, T> AnyThread for T
where T: ClassType<ThreadKind = dyn AnyThread + 'a> + ?Sized,

Source§

fn alloc() -> Allocated<Self>
where Self: Sized + ClassType,

Allocate a new instance of the class. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> AutoreleaseSafe for T
where T: ?Sized,