标签: nsrange

NSRange到Range <String.Index>

我怎么能转换NSRangeRange<String.Index>斯威夫特?

我想使用以下UITextFieldDelegate方法:

    func textField(textField: UITextField!,
        shouldChangeCharactersInRange range: NSRange,
        replacementString string: String!) -> Bool {

textField.text.stringByReplacingCharactersInRange(???, withString: string)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

nsstring nsrange swift ios8

245
推荐指数
6
解决办法
11万
查看次数

来自Swift Range的NSRange?

问题:当我使用使用Range的Swift String时,NSAttributedString接受NSRange

let text = "Long paragraph saying something goes here!"
let textRange = text.startIndex..<text.endIndex
let attributedString = NSMutableAttributedString(string: text)

text.enumerateSubstringsInRange(textRange, options: NSStringEnumerationOptions.ByWords, { (substring, substringRange, enclosingRange, stop) -> () in

    if (substring == "saying") {
        attributedString.addAttribute(NSForegroundColorAttributeName, value: NSColor.redColor(), range: substringRange)
    }
})
Run Code Online (Sandbox Code Playgroud)

产生以下错误:

错误:'Range'不能转换为'NSRange'aligolsString.addAttribute(NSForegroundColorAttributeName,value:NSColor.redColor(),range:substringRange)

macos ios nsrange swift

153
推荐指数
8
解决办法
11万
查看次数

应该如何在Swift中使用ChangeCharactersInRange?

我正在使用shouldChangeCharactersInRange作为使用动态类型搜索的一种方式.

但是我遇到了问题,在文本字段实际更新之前调用了更改角色的内容:

在Objective C中,我使用以下方法解决了这个问题:

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSString * searchStr = [textField.text stringByReplacingCharactersInRange:range withString:string];

    return YES;
}
Run Code Online (Sandbox Code Playgroud)

但是,我试过在Swift中写这个:

func textField(textField: UITextField!, shouldChangeCharactersInRange range: NSRange, replacementString string: String!) -> Bool {
    let txtAfterUpdate:NSString = self.projectSearchTxtFld.text as NSString
    txtAfterUpdate.stringByReplacingCharactersInRange(range, withString: string)

    self.callMyMethod(txtAfterUpdate)
    return true
}
Run Code Online (Sandbox Code Playgroud)

在得到值之前,该方法仍会被调用?

objective-c ios nsrange uitextfielddelegate swift

67
推荐指数
4
解决办法
6万
查看次数

如何将NSRange存储在NSMutableArray或其他容器中?

这就是我想要做的事情:

NSRange r = NSMakeRange(0,5);
id a = [NSMutableArray a];
[a addObject: r]; // but NSRange is not a NSObject *
Run Code Online (Sandbox Code Playgroud)

使用布尔值,我会使用这样的代码:

[a addObject: [NSNumber numberWithBool: YES]];
Run Code Online (Sandbox Code Playgroud)

或者用整数:

[a addObject: [NSNumber numberWithInteger: 3]];
Run Code Online (Sandbox Code Playgroud)

那么什么是等同于NSRange?我真的不想做的是创建我自己的子类NSObject来完成这个.当然苹果已经提供了一种方式吗?

iphone cocoa cocoa-touch nsobject nsrange

58
推荐指数
3
解决办法
2万
查看次数

为NSString的整个长度生成NSRange的快捷方式?

是否有一个简短的方法来说"整个字符串"而不是输入:

NSMakeRange(0, myString.length)]
Run Code Online (Sandbox Code Playgroud)

这种代码中最长的一部分是最不重要的(因为我通常想在整个字符串中搜索/替换),这似乎很愚蠢......

[myString replaceOccurrencesOfString:@"replace_me"
                          withString:replacementString
                             options:NSCaseInsensitiveSearch
                               range:NSMakeRange(0, myString.length)];
Run Code Online (Sandbox Code Playgroud)

objective-c nsstring ios nsrange

51
推荐指数
6
解决办法
3万
查看次数

从NSRange创建UITextRange

我需要在textview中找到不同范围的像素帧.我正在用- (CGRect)firstRectForRange:(UITextRange *)range;它来做.但是我无法找到如何实际创建一个UITextRange.

基本上这就是我要找的东西:

- (CGRect)frameOfTextRange:(NSRange)range inTextView:(UITextView *)textView {

    UITextRange*range2 = [UITextRange rangeWithNSRange:range]; //DOES NOT EXIST 
    CGRect rect = [textView firstRectForRange:range2];
    return rect;
}
Run Code Online (Sandbox Code Playgroud)

Apple表示必须进行子类化UITextRangeUITextPosition采用该UITextInput协议.我不这样做,但无论如何,我尝试了,遵循doc的示例代码并传递firstRectForRange导致崩溃的子类.

如果有更简单的方法UILables可以在textview 中添加不同的颜色,请告诉我.我尝试使用content editable设置为TRUE的UIWebView ,但我不喜欢与JS通信,并且着色是我唯一需要的东西.

提前致谢.

objective-c uitextview nsrange ios5

48
推荐指数
4
解决办法
3万
查看次数

如何从NSString中捕获最后4个字符

我接受一个NSString随机size的a UITextField并将其传递给我正在创建的方法,该方法将仅捕获输入的最后4个字符string.

我查看了NSString类参考库,我发现的唯一真正的选项看起来会像我想要的那样

- (void)getCharacters:(unichar *)buffer range:(NSRange)aRange
Run Code Online (Sandbox Code Playgroud)

我曾经使用过一次,但是静态参数'不会改变',但对于这个实现,我想使用非静态参数,这些参数会根据进入的字符串的大小而改变.

到目前为止,这是我创建的方法,它NSString从IBAction 传递给其他地方.

- (void)padString:(NSString *)funcString
{

    NSString *myFormattedString = [NSString stringWithFormat:@"%04d",[funcString intValue]]; // if less than 4 then pad string
    //   NSLog(@"my formatedstring = %@", myFormattedString);

    int stringLength = [myFormattedString length]; // captures length of string maybe I can use this on NSRange?


    //NSRange MyOneRange = {0, 1}; //<<-------- should I use this? if so how?

}
Run Code Online (Sandbox Code Playgroud)

iphone nsstring ios nsrange swift

35
推荐指数
2
解决办法
2万
查看次数

在Swift中加入UILabel的一部分

我有一个UILabel以编程方式制作的:

var label = UILabel()
Run Code Online (Sandbox Code Playgroud)

然后,我为标签声明了一些样式,包括字体,例如:

label.frame = CGRect(x: 20, y: myHeaderView.frame.height / 2, width: 300, height: 30)
label.font = UIFont(name: "Typo GeoSlab Regular Demo", size: 15)
label.textColor = UIColor(hue: 0/360, saturation: 0/100, brightness: 91/100, alpha: 1)
Run Code Online (Sandbox Code Playgroud)

标签的第一部分将始终显示:"Filter:"然后是字符串的另一部分,例如"最受欢迎"

我希望单词过滤器以粗体显示,所以整个过程看起来像:

过滤:最受欢迎

我想以最简单的方式创建这种效果.我一直在互联网上搜索如何实现这一点,有很多方法,有些看起来像代码页.其中大部分似乎都是在Objective-C中.我想在Swift请:)

我不知道我是否在正确的路线上,但这NSRange有助于实现吗?提前致谢

更新

我使用一系列if语句来改变我的label变量.如:

if indexArray == 1 {

    label.text = "Filter: Film name"

} else if indexArray == 2 {

    label.text = "Filter: Most popular"

} else if …
Run Code Online (Sandbox Code Playgroud)

string uilabel ios nsrange swift

33
推荐指数
5
解决办法
3万
查看次数

使用substringWithRange提取字符串:给出"索引越界"

当我尝试从较大的字符串中提取字符串时,它会给出范围或索引超出范围的错误.我可能会忽略一些非常明显的东西.谢谢.

NSString *title = [TBXML textForElement:title1];
TBXMLElement * description1 = [TBXML childElementNamed:@"description" parentElement:item1];
NSString *description = [TBXML textForElement:description1];
NSMutableString *des1 = [NSMutableString stringWithString:description];

//search for <pre> tag for its location in the string
NSRange match;
NSRange match1;
match = [des1 rangeOfString: @"<pre>"];
match1 = [des1 rangeOfString: @"</pre>"];
NSLog(@"%i,%i",match.location,match1.location);
NSString *newDes = [des1 substringWithRange: NSMakeRange (match.location+5, match1.location-1)]; //<---This is the line causing the error

NSLog(@"title=%@",title);
NSLog(@"description=%@",newDes);
Run Code Online (Sandbox Code Playgroud)

更新:范围的第二部分是长度,而不是端点.D'哦!

cocoa objective-c nsstring nsrange

29
推荐指数
2
解决办法
5万
查看次数

NSRange和NSMakeRange之间的区别

之间有什么区别:

NSRange(location: 0, length: 5)
Run Code Online (Sandbox Code Playgroud)

和:

NSMakeRange(0, 5)
Run Code Online (Sandbox Code Playgroud)

因为Swiftlint我使用时会发出警告NSMakeRange,但我不知道为什么.

谢谢您的帮助 :-)

nsrange swift swiftlint

25
推荐指数
2
解决办法
3193
查看次数