Skip to content

Make using property lists easier #735

Open
@madsmtm

Description

@madsmtm

It might make sense to add helper methods to AnyObject and CFType to allow more easily converting to common property list types (CF docs, Cocoa docs, core-foundation source).

Something like the following:

/// Property list helpers.
impl [AnyObject|CFType] {
    pub fn as_string(&self) -> Option<&[NS|CF]String> {
        self.downcast_ref()
    }

    pub fn as_number(&self) -> Option<&[NS|CF]Number> {
        self.downcast_ref()
    }

    pub fn as_data(&self) -> Option<&[NS|CF]Data> {
        self.downcast_ref()
    }

    pub fn as_array(&self) -> Option<&[NS|CF]Array> {
        self.downcast_ref()
    }

    pub fn as_dict(&self) -> Option<&[NS|CF]Dictionary> {
        self.downcast_ref()
    }

    pub fn as_date(&self) -> Option<&[NS|CF]Date> {
        self.downcast_ref()
    }

    // Only on CFType
    pub fn as_bool(&self) -> Option<&[NS|CF]Boolean> {
        self.downcast_ref()
    }
}

An alternative would be to wrap these in a newtype that provided much the same, but I suspect that'd be less ergonomic. Yet another alternative would be to eagerly convert to an enum, but that'd probably be less performant.

We should also make sure it's easy to use dictionary getter methods here.

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-frameworkAffects the framework crates and the translator for themenhancementNew feature or requestgood first issueGood for newcomers

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions