#[repr(C)]pub struct EKRecurrenceRule { /* private fields */ }
EKObject
and EKRecurrenceRule
only.Expand description
Represents how an event repeats.
This class describes the recurrence pattern for a repeating event. The recurrence rules that can be expressed are not restricted to the recurrence patterns that can be set in Calendar’s UI.
It is currently not possible to directly modify a EKRecurrenceRule or any of its properties. This functionality is achieved by creating a new EKRecurrenceRule, and setting an event to use the new rule. When a new recurrence rule is set on an EKEvent, that change is not saved until the client has passed the modified event to EKEventStore’s saveEvent: method.
See also Apple’s documentation
Implementations§
Source§impl EKRecurrenceRule
impl EKRecurrenceRule
Sourcepub unsafe fn initRecurrenceWithFrequency_interval_end(
this: Allocated<Self>,
type: EKRecurrenceFrequency,
interval: NSInteger,
end: Option<&EKRecurrenceEnd>,
) -> Retained<Self>
Available on crate features EKRecurrenceEnd
and EKTypes
only.
pub unsafe fn initRecurrenceWithFrequency_interval_end( this: Allocated<Self>, type: EKRecurrenceFrequency, interval: NSInteger, end: Option<&EKRecurrenceEnd>, ) -> Retained<Self>
EKRecurrenceEnd
and EKTypes
only.Simple initializer to create a recurrence.
This is used to create a simple recurrence with a specific type, interval and end. If interval is 0, an exception is raised. The end parameter can be nil.
Sourcepub unsafe fn initRecurrenceWithFrequency_interval_daysOfTheWeek_daysOfTheMonth_monthsOfTheYear_weeksOfTheYear_daysOfTheYear_setPositions_end(
this: Allocated<Self>,
type: EKRecurrenceFrequency,
interval: NSInteger,
days: Option<&NSArray<EKRecurrenceDayOfWeek>>,
month_days: Option<&NSArray<NSNumber>>,
months: Option<&NSArray<NSNumber>>,
weeks_of_the_year: Option<&NSArray<NSNumber>>,
days_of_the_year: Option<&NSArray<NSNumber>>,
set_positions: Option<&NSArray<NSNumber>>,
end: Option<&EKRecurrenceEnd>,
) -> Retained<Self>
Available on crate features EKRecurrenceDayOfWeek
and EKRecurrenceEnd
and EKTypes
only.
pub unsafe fn initRecurrenceWithFrequency_interval_daysOfTheWeek_daysOfTheMonth_monthsOfTheYear_weeksOfTheYear_daysOfTheYear_setPositions_end( this: Allocated<Self>, type: EKRecurrenceFrequency, interval: NSInteger, days: Option<&NSArray<EKRecurrenceDayOfWeek>>, month_days: Option<&NSArray<NSNumber>>, months: Option<&NSArray<NSNumber>>, weeks_of_the_year: Option<&NSArray<NSNumber>>, days_of_the_year: Option<&NSArray<NSNumber>>, set_positions: Option<&NSArray<NSNumber>>, end: Option<&EKRecurrenceEnd>, ) -> Retained<Self>
EKRecurrenceDayOfWeek
and EKRecurrenceEnd
and EKTypes
only.The designated initializer.
This can be used to build any kind of recurrence rule. But be aware that certain combinations make no sense and will be ignored. For example, if you pass daysOfTheWeek for a daily recurrence, they will be ignored.
Parameter type
: The type of recurrence
Parameter interval
: The interval. Passing zero will raise an exception.
Parameter daysOfTheWeek
: An array of EKRecurrenceDayOfWeek objects. Valid for all recurrence types except daily. Ignored otherwise.
Corresponds to the BYDAY value in the iCalendar specification.
Parameter daysOfTheMonth
: An array of NSNumbers ([+/-] 1 to 31). Negative numbers infer counting from the end of the month.
For example, -1 means the last day of the month. Valid only for monthly recurrences. Ignored otherwise.
Corresponds to the BYMONTHDAY value in the iCalendar specification.
Parameter monthsOfTheYear
: An array of NSNumbers (1 to 12). Valid only for yearly recurrences. Ignored otherwise. Corresponds to
the BYMONTH value in the iCalendar specification.
Parameter weeksOfTheYear
: An array of NSNumbers ([+/1] 1 to 53). Negative numbers infer counting from the end of the year.
For example, -1 means the last week of the year. Valid only for yearly recurrences. Ignored otherwise.
Corresponds to the BYWEEKNO value in the iCalendar specification.
Parameter daysOfTheYear
: An array of NSNumbers ([+/1] 1 to 366). Negative numbers infer counting from the end of the year.
For example, -1 means the last day of the year. Valid only for yearly recurrences. Ignored otherwise.
Corresponds to the BYYEARDAY value in the iCalendar specification.
Parameter setPositions
: An array of NSNumbers ([+/1] 1 to 366). Used at the end of recurrence computation to filter the list
to the positions specified. Negative numbers indicate starting at the end, i.e. -1 indicates taking the
last result of the set. Valid when daysOfTheWeek, daysOfTheMonth, monthsOfTheYear, weeksOfTheYear, or
daysOfTheYear is passed. Ignored otherwise. Corresponds to the BYSETPOS value in the iCalendar specification.
Parameter end
: The recurrence end, or nil.
Sourcepub unsafe fn calendarIdentifier(&self) -> Retained<NSString>
pub unsafe fn calendarIdentifier(&self) -> Retained<NSString>
Calendar used by this recurrence rule.
Sourcepub unsafe fn recurrenceEnd(&self) -> Option<Retained<EKRecurrenceEnd>>
Available on crate feature EKRecurrenceEnd
only.
pub unsafe fn recurrenceEnd(&self) -> Option<Retained<EKRecurrenceEnd>>
EKRecurrenceEnd
only.This property defines when the the repeating event is scheduled to end. The end date can be specified by a number of occurrences, or with an end date.
Sourcepub unsafe fn setRecurrenceEnd(&self, recurrence_end: Option<&EKRecurrenceEnd>)
Available on crate feature EKRecurrenceEnd
only.
pub unsafe fn setRecurrenceEnd(&self, recurrence_end: Option<&EKRecurrenceEnd>)
EKRecurrenceEnd
only.Setter for recurrenceEnd
.
Sourcepub unsafe fn frequency(&self) -> EKRecurrenceFrequency
Available on crate feature EKTypes
only.
pub unsafe fn frequency(&self) -> EKRecurrenceFrequency
EKTypes
only.This property designates the unit of time used to describe the recurrence pattern.
Sourcepub unsafe fn interval(&self) -> NSInteger
pub unsafe fn interval(&self) -> NSInteger
The interval of a EKRecurrenceRule is an integer value which specifies how often the recurrence rule repeats over the unit of time described by the EKRecurrenceFrequency. For example, if the EKRecurrenceFrequency is EKRecurrenceWeekly, then an interval of 1 means the pattern is repeated every week. A value of 2 indicates it is repeated every other week, 3 means every third week, and so on. The value must be a positive integer; 0 is not a valid value, and nil will be returned if the client attempts to initialize a rule with a negative or zero interval.
Sourcepub unsafe fn firstDayOfTheWeek(&self) -> NSInteger
pub unsafe fn firstDayOfTheWeek(&self) -> NSInteger
Recurrence patterns can specify which day of the week should be treated as the first day. Possible values for this property are integers 0 and 1-7, which correspond to days of the week with Sunday = 1. Zero indicates that the property is not set for this recurrence. The first day of the week only affects the way the recurrence is expanded for weekly recurrence patterns with an interval greater than 1. For those types of recurrence patterns, the Calendar framework will set firstDayOfTheWeek to be 2 (Monday). In all other cases, this property will be set to zero. The iCalendar spec stipulates that the default value is Monday if this property is not set.
Sourcepub unsafe fn daysOfTheWeek(
&self,
) -> Option<Retained<NSArray<EKRecurrenceDayOfWeek>>>
Available on crate feature EKRecurrenceDayOfWeek
only.
pub unsafe fn daysOfTheWeek( &self, ) -> Option<Retained<NSArray<EKRecurrenceDayOfWeek>>>
EKRecurrenceDayOfWeek
only.This property is valid for rules whose EKRecurrenceFrequency is EKRecurrenceFrequencyWeekly, EKRecurrenceFrequencyMonthly, or EKRecurrenceFrequencyYearly. This property can be accessed as an array containing one or more EKRecurrenceDayOfWeek objects corresponding to the days of the week the event recurs. For all other EKRecurrenceRules, this property is nil. This property corresponds to BYDAY in the iCalendar specification.
Sourcepub unsafe fn daysOfTheMonth(&self) -> Option<Retained<NSArray<NSNumber>>>
pub unsafe fn daysOfTheMonth(&self) -> Option<Retained<NSArray<NSNumber>>>
This property is valid for rules whose EKRecurrenceFrequency is EKRecurrenceFrequencyMonthly, and that were initialized with one or more specific days of the month (not with a day of the week and week of the month). This property can be accessed as an array containing one or more NSNumbers corresponding to the days of the month the event recurs. For all other EKRecurrenceRules, this property is nil. This property corresponds to BYMONTHDAY in the iCalendar specification.
Sourcepub unsafe fn daysOfTheYear(&self) -> Option<Retained<NSArray<NSNumber>>>
pub unsafe fn daysOfTheYear(&self) -> Option<Retained<NSArray<NSNumber>>>
This property is valid for rules whose EKRecurrenceFrequency is EKRecurrenceFrequencyYearly. This property can be accessed as an array containing one or more NSNumbers corresponding to the days of the year the event recurs. For all other EKRecurrenceRules, this property is nil. This property corresponds to BYYEARDAY in the iCalendar specification. It should contain values between 1 to 366 or -366 to -1.
Sourcepub unsafe fn weeksOfTheYear(&self) -> Option<Retained<NSArray<NSNumber>>>
pub unsafe fn weeksOfTheYear(&self) -> Option<Retained<NSArray<NSNumber>>>
This property is valid for rules whose EKRecurrenceFrequency is EKRecurrenceFrequencyYearly. This property can be accessed as an array containing one or more NSNumbers corresponding to the weeks of the year the event recurs. For all other EKRecurrenceRules, this property is nil. This property corresponds to BYWEEK in the iCalendar specification. It should contain integers from 1 to 53 or -1 to -53.
Sourcepub unsafe fn monthsOfTheYear(&self) -> Option<Retained<NSArray<NSNumber>>>
pub unsafe fn monthsOfTheYear(&self) -> Option<Retained<NSArray<NSNumber>>>
This property is valid for rules whose EKRecurrenceFrequency is EKRecurrenceFrequencyYearly. This property can be accessed as an array containing one or more NSNumbers corresponding to the months of the year the event recurs. For all other EKRecurrenceRules, this property is nil. This property corresponds to BYMONTH in the iCalendar specification.
Sourcepub unsafe fn setPositions(&self) -> Option<Retained<NSArray<NSNumber>>>
pub unsafe fn setPositions(&self) -> Option<Retained<NSArray<NSNumber>>>
This property is valid for rules which have a valid daysOfTheWeek, daysOfTheMonth, weeksOfTheYear, or monthsOfTheYear property. It allows you to specify a set of ordinal numbers to help choose which objects out of the set of selected events should be included. For example, setting the daysOfTheWeek to Monday-Friday and including a value of -1 in the array would indicate the last weekday in the recurrence range (month, year, etc). This value corresponds to the iCalendar BYSETPOS property.
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 EKRecurrenceRule
impl AsRef<AnyObject> for EKRecurrenceRule
Source§impl AsRef<EKObject> for EKRecurrenceRule
impl AsRef<EKObject> for EKRecurrenceRule
Source§impl AsRef<EKRecurrenceRule> for EKRecurrenceRule
impl AsRef<EKRecurrenceRule> for EKRecurrenceRule
Source§impl AsRef<NSObject> for EKRecurrenceRule
impl AsRef<NSObject> for EKRecurrenceRule
Source§impl Borrow<AnyObject> for EKRecurrenceRule
impl Borrow<AnyObject> for EKRecurrenceRule
Source§impl Borrow<EKObject> for EKRecurrenceRule
impl Borrow<EKObject> for EKRecurrenceRule
Source§impl Borrow<NSObject> for EKRecurrenceRule
impl Borrow<NSObject> for EKRecurrenceRule
Source§impl ClassType for EKRecurrenceRule
impl ClassType for EKRecurrenceRule
Source§const NAME: &'static str = "EKRecurrenceRule"
const NAME: &'static str = "EKRecurrenceRule"
Source§type ThreadKind = <<EKRecurrenceRule as ClassType>::Super as ClassType>::ThreadKind
type ThreadKind = <<EKRecurrenceRule as ClassType>::Super as ClassType>::ThreadKind
Source§impl CopyingHelper for EKRecurrenceRule
impl CopyingHelper for EKRecurrenceRule
Source§type Result = EKRecurrenceRule
type Result = EKRecurrenceRule
Self
if the type has no
immutable counterpart. Read moreSource§impl Debug for EKRecurrenceRule
impl Debug for EKRecurrenceRule
Source§impl Deref for EKRecurrenceRule
impl Deref for EKRecurrenceRule
Source§impl Hash for EKRecurrenceRule
impl Hash for EKRecurrenceRule
Source§impl Message for EKRecurrenceRule
impl Message for EKRecurrenceRule
Source§impl NSCopying for EKRecurrenceRule
impl NSCopying for EKRecurrenceRule
Source§impl NSObjectProtocol for EKRecurrenceRule
impl NSObjectProtocol for EKRecurrenceRule
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