Hmm, that is interesting to know. I had not realised that URL is in fact NOT a 
NSURL but a new type that is based on NSURL (and can be toll-free bridged I 
assume?).
I also presume that the same is true for Data/NSData, Date/NSDate etc?

(Failure on my part, as I did of course know that the .path method/var is in 
fact different on URL and NSURL)

Regards,
Rien

Site: http://balancingrock.nl
Blog: http://swiftrien.blogspot.com
Github: http://github.com/Swiftrien
Project: http://swiftfire.nl




> On 06 Jan 2017, at 14:39, Rod Brown via swift-users <swift-users@swift.org> 
> wrote:
> 
> Hi Jan,
> 
> The Swift 3 URL struct has a modernized version of the NSURL API which works 
> far better in Swift. This replaces “getResourceValue(…)” with the API you 
> mentioned: “resourceValues(forKeys:)”.
> 
> 
> Previously, in Swift 2, you had to use an separate value, use 
> AutoreleasingUnsafeMutablePointers, conditionally cast and then hope you got 
> the value, and that you used the correct typecast for the key you were asking 
> for:
> 
> let url = NSURL(fileURLWithPath: "/Users/me/Desktop/File.png")
>         
> var fileType: AnyObject? = nil
> do {
>     try url.getResourceValue(&fileType, forKey: NSURLTypeIdentifierKey)
>     
>     if let type = fileType as? String {
>         // Use the file type here
>     } else {
>         // Handle error
>     }
> } catch {
>     // Handle error
> }
> 
> 
> In Swift 3 with the new Swift URL, the resourceValues(forKeys:) creates a 
> struct with optional type safe properties representing each resource key 
> type, and returns it, allowing you to use if let syntax:
> 
> let url = URL(fileURLWithPath: "/Users/me/Desktop/File.png")
> if let resourceValues = try? url.resourceValues(forKeys: 
> [.typeIdentifierKey]),
>    let fileType = resourceValues.typeIdentifier {
>        // Use the file type here
> }
> 
> 
> This is a much cleaner, clearer, and type-safe API.
> 
> If you want to use the old API, you can simply cast back to NSURL if you 
> require the old behaviour. That said, the new one should serve all your needs 
> and make things so much easier so I recommend you give it a go.
> 
> Hope this helps,
> 
> Rod
> 
> 
> 
> 
>> On 6 Jan 2017, at 6:36 am, J.E. Schotsman via swift-users 
>> <swift-users@swift.org> wrote:
>> 
>> Hello,
>> 
>> Is getResourceValue a method or URL or only on NSURL?
>> After migrating a project to Swift 3 I have code like
>> 
>> var file:URL
>> file.getResourceValue(...) // compiles!
>> 
>> From the documentation and the headers I get the impression that this should 
>> not compile!
>> 
>> TIA,
>> 
>> Jan E.
>> _______________________________________________
>> swift-users mailing list
>> swift-users@swift.org
>> https://lists.swift.org/mailman/listinfo/swift-users
> 
> _______________________________________________
> swift-users mailing list
> swift-users@swift.org
> https://lists.swift.org/mailman/listinfo/swift-users

_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to