Re: cannot invoke 'substringToIndex' with an argument list of type '(Int)'

2015-07-07 Thread Roland King
The docs for NSString say that substringToIndex is declared like that. If you 
looked at the autocomplete when you typed it in you’d see it wants an Index, 
that’s a method on String. And no it’s not in the documentation but it is in 
the API diffs and autocomplete gets it right (for me at least) and Cmd Clicking 
takes me there too. 

If you want to use an NSString method with the same name as a String one, cast 
to an NSString, ( s as NSString )

same with substringFromIndex

and NSURL is a fallible initializer so you can’t return it like that, you 
unwrap it, or throw, or test it or something. 

Your last mail about NSURLs didn’t make any sense either by the way. You were 
using .rawValue() on things typed as Strings, Strings don’t have raw values, so 
I think that isn’t really your code. 


 On 7 Jul 2015, at 15:02, Rick Mann rm...@latencyzero.com wrote:
 
 What? The docs say that substringToIndex is declared like this:
 
   func substringToIndex(_ to: Int) - String
 
 So, why can't I call that here:
 
 extension
 NSURL
 {
   func
   normalizedURLByAppendingPathComponent(var inComponent : String)
   - NSURL
   {
   var s = self.absoluteString;
   if s.hasSuffix(/)
   {
   s = s.substringToIndex(s.characters.count - 1)
   }
 
   if inComponent.hasPrefix(/)
   {
   inComponent = inComponent.substringFromIndex(1);
   }
 
   s = s.stringByAppendingString(/);
   s = s.stringByAppendingString(inComponent);
 
   let u = NSURL(string: s);
   return u;
   }
 }
 
 
 -- 
 Rick Mann
 rm...@latencyzero.com
 
 
 ___
 
 Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)
 
 Please do not post admin requests or moderator comments to the list.
 Contact the moderators at cocoa-dev-admins(at)lists.apple.com
 
 Help/Unsubscribe/Update your Subscription:
 https://lists.apple.com/mailman/options/cocoa-dev/rols%40rols.org
 
 This email sent to r...@rols.org


___

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

cannot invoke 'substringToIndex' with an argument list of type '(Int)'

2015-07-07 Thread Rick Mann
What? The docs say that substringToIndex is declared like this:

func substringToIndex(_ to: Int) - String

So, why can't I call that here:

extension
NSURL
{
   func
   normalizedURLByAppendingPathComponent(var inComponent : String)
   - NSURL
   {
   var s = self.absoluteString;
   if s.hasSuffix(/)
   {
   s = s.substringToIndex(s.characters.count - 1)
   }

   if inComponent.hasPrefix(/)
   {
   inComponent = inComponent.substringFromIndex(1);
   }

   s = s.stringByAppendingString(/);
   s = s.stringByAppendingString(inComponent);

   let u = NSURL(string: s);
   return u;
   }
}


-- 
Rick Mann
rm...@latencyzero.com


___

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Re: cannot invoke 'substringToIndex' with an argument list of type '(Int)'

2015-07-07 Thread Stephen J. Butler
You should file a documentation bug. The signature is actually:

func substringFromIndex(index: String.Index) - String

So what you really want I believe is:

s = s.substringToIndex(advance(s.endIndex, -1))


On Tue, Jul 7, 2015 at 2:02 AM, Rick Mann rm...@latencyzero.com wrote:

 What? The docs say that substringToIndex is declared like this:

 func substringToIndex(_ to: Int) - String

 So, why can't I call that here:

 extension
 NSURL
 {
func
normalizedURLByAppendingPathComponent(var inComponent : String)
- NSURL
{
var s = self.absoluteString;
if s.hasSuffix(/)
{
s = s.substringToIndex(s.characters.count - 1)
}

if inComponent.hasPrefix(/)
{
inComponent = inComponent.substringFromIndex(1);
}

s = s.stringByAppendingString(/);
s = s.stringByAppendingString(inComponent);

let u = NSURL(string: s);
return u;
}
 }


 --
 Rick Mann
 rm...@latencyzero.com


 ___

 Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

 Please do not post admin requests or moderator comments to the list.
 Contact the moderators at cocoa-dev-admins(at)lists.apple.com

 Help/Unsubscribe/Update your Subscription:

 https://lists.apple.com/mailman/options/cocoa-dev/stephen.butler%40gmail.com

 This email sent to stephen.but...@gmail.com
___

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Re: cannot invoke 'substringToIndex' with an argument list of type '(Int)'

2015-07-07 Thread Quincey Morris
On Jul 7, 2015, at 00:22 , Roland King r...@rols.org wrote:
 
 If you want to use an NSString method with the same name as a String one, 
 cast to an NSString, ( s as NSString )

The other thing to be really, really careful of when bridging is that all 
indexes and ranges derived from NSString API are counting by UTF-16 code 
units**, as they’ve always done. Indexes and ranges derived from String API are 
counting by graphemes.


** At least, that was the situation in Swift 1.2. I haven’t looked into what’s 
changed with NSString bridging in Swift 2, but I suspect caution is still 
advisable.



___

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Re: cannot invoke 'substringToIndex' with an argument list of type '(Int)'

2015-07-07 Thread Roland King
The bug is really that they haven’t documented the new String method so you 
only get the old (and still-existing) NSString method. 

I did find it in some documentation which pointed to online documentation (you 
can tell by the lag) so I went to prefs, updated my docsets, and now I don’t 
have it any more, which is rather par for the course and generally sad. 

new Xcode tomorrow (?), perhaps we’ll get a docs update. 

 On 7 Jul 2015, at 15:25, Stephen J. Butler stephen.but...@gmail.com wrote:
 
 You should file a documentation bug. The signature is actually:
 
 func substringFromIndex(index: String.Index) - String
 
 So what you really want I believe is:
 
 s = s.substringToIndex(advance(s.endIndex, -1))
 
 
 On Tue, Jul 7, 2015 at 2:02 AM, Rick Mann rm...@latencyzero.com wrote:
 
 What? The docs say that substringToIndex is declared like this:
 
func substringToIndex(_ to: Int) - String
 
 So, why can't I call that here:
 
 extension
 NSURL
 {
   func
   normalizedURLByAppendingPathComponent(var inComponent : String)
   - NSURL
   {
   var s = self.absoluteString;
   if s.hasSuffix(/)
   {
   s = s.substringToIndex(s.characters.count - 1)
   }
 
   if inComponent.hasPrefix(/)
   {
   inComponent = inComponent.substringFromIndex(1);
   }
 
   s = s.stringByAppendingString(/);
   s = s.stringByAppendingString(inComponent);
 
   let u = NSURL(string: s);
   return u;
   }
 }
 
 
 --
 Rick Mann
 rm...@latencyzero.com
 
 
 ___
 
 Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)
 
 Please do not post admin requests or moderator comments to the list.
 Contact the moderators at cocoa-dev-admins(at)lists.apple.com
 
 Help/Unsubscribe/Update your Subscription:
 
 https://lists.apple.com/mailman/options/cocoa-dev/stephen.butler%40gmail.com
 
 This email sent to stephen.but...@gmail.com
 ___
 
 Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)
 
 Please do not post admin requests or moderator comments to the list.
 Contact the moderators at cocoa-dev-admins(at)lists.apple.com
 
 Help/Unsubscribe/Update your Subscription:
 https://lists.apple.com/mailman/options/cocoa-dev/rols%40rols.org
 
 This email sent to r...@rols.org


___

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Re: cannot invoke 'substringToIndex' with an argument list of type '(Int)'

2015-07-07 Thread Charles Srstka
On Jul 7, 2015, at 2:47 AM, Rick Mann rm...@latencyzero.com wrote:
 
 
 On Jul 7, 2015, at 00:46 , Charles Srstka cocoa...@charlessoft.com wrote:
 
 You don’t have an NSString. You have a String. It works differently.
 
 Well, they're toll-free bridged, and substringToIndex() is a method on 
 NSString (or so I thought). Anyway, it turns out to be an error in the 
 documentation, so now I understand.

They are *not* toll-free bridged. When you cast one to the other, it actually 
does a conversion.

The documentation is not incorrect; the method on NSString *does* take an Int. 
If you try it on strings that are actually typed as NSString, you’ll see that 
they take an Int:

import Foundation

let str = foobar as NSString
let str2 = str.substringFromIndex(3)

This results in str2 being “bar”. Swift Strings, however, follow different 
rules, in order to be safe about cases where a character in a string takes up 
more than one UTF-16 code unit.

Charles


___

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com