[swift-corelibs-dev] NSURL getResourceValue
anthony.parker at apple.com
Thu Mar 31 14:44:05 CDT 2016
Hi Zach, Daniel,
> On Mar 31, 2016, at 11:03 AM, Zach Waldowski via swift-corelibs-dev <swift-corelibs-dev at swift.org> wrote:
> The semantics of the methods are fairly nuanced in ObjC.
> You can have a resource value that fails to be fetched, or one that
> succeeded to fetch but had no value. A Swift version would model this as
> `throws -> AnyObject?`.
> For the dictionary version, you may ask for a resource value, it
> succeeds, but isn't included in the dictionary because it was `nil`.
> This version is modeled "fine" in Swift, but like you mentioned it also
> isn't available.
> Sorry for not being clear — the point was that it is desired for
> corelibs-Foundation to have the same API as Darwin-Foundation, as has
> been mentioned on this mailing list. Anything outside that has to be
> approved (internally to Apple, I think?), and this just hasn't been
> worked through yet.
> Unrelated, it also appears that the underlying versions
> (CFURLCopyResourcePropertyForKey and CFURLCopyResourcePropertiesForKeys)
> aren't included in corelibs-CoreFoundation. I have to imagine those are
> pretty platform-specific, but I can't comment on their conspicuous
> disappearance because I have no more knowledge than you do. ;)
Yes, the reason we left these out is that they are very platform specific.
I could potentially see some kind of solution here where a dramatically reduced set of keys are available on all platforms. Things like file name and file size are probably able to be implemented in a cross-platform way. For now, I just left the whole thing out because sorting through what would be portable or not would be a pretty large task.
> On Thu, Mar 31, 2016, at 12:23 PM, Daniel Eggert wrote:
>> Well, there's
>> func resourceValuesForKeys(_ keys: [String]) throws -> [String :
>> which doesn't use AutoreleasingUnsafeMutablePointer, but that doesn't
>> exist in Swift, either.
>> And the other one could have a replacement like so:
>> func resourceValue(forKey key: String) -> AnyObject throws
>> The "NSURL resource value" API has 7 methods of which none exist in
>>> On 31 Mar 2016, at 15:37, Zach Waldowski via swift-corelibs-dev <swift-corelibs-dev at swift.org> wrote:
>>> You can't have AutoreleasingUnsafeMutablePointer without Objective-C
>>> On Thu, Mar 31, 2016, at 07:17 AM, Daniel Eggert via swift-corelibs-dev
>>>> What's the reason for the "resource value" API on NSURL not being present
>>>> in SwiftFoundation?
>>>> func getResourceValue(_ value:
>>>> AutoreleasingUnsafeMutablePointer<AnyObject?>, forKey key: String) throws
>>>> swift-corelibs-dev mailing list
>>>> swift-corelibs-dev at swift.org
>>> swift-corelibs-dev mailing list
>>> swift-corelibs-dev at swift.org
> swift-corelibs-dev mailing list
> swift-corelibs-dev at swift.org
More information about the swift-corelibs-dev