标签: nsstring

"stringWithFormat:"的意外结果

以下Objective C代码的预期结果是什么?

int intValue = 1;
NSString *string = [NSString stringWithFormat:@"%+02d", intValue];
Run Code Online (Sandbox Code Playgroud)

我认为字符串的值是"+01",结果是"+1".格式字符串"+01"中的某些"0"被忽略.将代码更改为:

int intValue = 1;
NSString *string = [NSString stringWithFormat:@"%02d", intValue];
Run Code Online (Sandbox Code Playgroud)

string的值现在是"01".它确实产生前导"0".但是,如果intValue为负数,则如下所示:

int intValue = -1;
NSString *string = [NSString stringWithFormat:@"%02d", intValue];
Run Code Online (Sandbox Code Playgroud)

string的值变为"-1",而不是"-01".

我错过了什么吗?或者这是一个已知的问题?推荐的解决方法是什么?提前致谢.

iphone objective-c nsstring ios

3
推荐指数
1
解决办法
909
查看次数

iOS:在UIImage上绘制NSString和边框

我想在我已经拥有的UIImage上绘制一个NSString和一个边框.我发现了一个将NSString绘制为UIImage的方法,但是我需要它来绘制我提供的图像.

-(UIImage *)imageFromText:(NSString *)text
{
    // set the font type and size
    UIFont *font = [UIFont systemFontOfSize:20.0];  
    CGSize size  = [text sizeWithFont:font];

    // check if UIGraphicsBeginImageContextWithOptions is available (iOS is 4.0+)
    if (UIGraphicsBeginImageContextWithOptions != NULL)
        UIGraphicsBeginImageContextWithOptions(size,NO,0.0);
    else
        // iOS is < 4.0 
        UIGraphicsBeginImageContext(size);

    // optional: add a shadow, to avoid clipping the shadow you should make the context size bigger 
    //
    // CGContextRef ctx = UIGraphicsGetCurrentContext();
    // CGContextSetShadowWithColor(ctx, CGSizeMake(1.0, 1.0), 5.0, [[UIColor grayColor] CGColor]);

    // draw in context, you can …
Run Code Online (Sandbox Code Playgroud)

iphone objective-c nsstring uiimage ios

3
推荐指数
1
解决办法
4188
查看次数

有没有办法使用NSString stringByFoldingWithOptions将单个法语'''字符展开为'oe'?

对于变音符号无关的全文搜索功能,我用下面的代码重音符号的字符转换像é或者Ö到他们的小写非重音形式eo

[[inputString stringByFoldingWithOptions: 
    NSCaseInsensitiveSearch
    + NSDiacriticInsensitiveSearch
    + NSWidthInsensitiveSearch
locale: [NSLocale currentLocale]] lowercaseString];
Run Code Online (Sandbox Code Playgroud)

这有效.但是,我发现无法转换基本形式由多个字符组成的特殊字符,如法语œ(如"sœur")或德语ß(如"Fluß").我想分别将它们转换成oess.我没有找到stringByFoldingWithOptions的标志,也没有在网上找到任何东西.

编辑

ß实际上是由上面的代码正确处理.它转换为ss.

cocoa objective-c diacritics nsstring ios

3
推荐指数
1
解决办法
1352
查看次数

NSRange给出了荒谬的位置

我正在经历这种奇怪的效果,在rangeOfString上调用location时它应该返回一个非常大的值,当它不应该...

我的代码看起来像这样:

NSRange range = [string rangeOfString:subString];
NSLog(@"range is %@", NSStringFromRange(range));
Run Code Online (Sandbox Code Playgroud)

这会退出 range is {2147483647, 0}

无法弄清楚为什么.

可能导致此问题的一些事情:

  • 子字符串是使用NSString的initWithBytes方法从字节数组生成的
  • 子字符串告诉我它是一个NSCFString*但是也说'变量不是NSString'
  • 子字符串按预期在控制台中记录

任何帮助非常感谢

这是一些让我感到奇怪的东西:

在此输入图像描述

nsstring ios

3
推荐指数
1
解决办法
993
查看次数

Evaulate NSString并作为Objective-C代码执行

这可能是一个完全荒谬的问题,但是有可能使用a NSString作为代码行的替代品吗?

for (int i = 0; i < 10: i++){    
    NSString *cam = @"locXCamProfileSwitch";
    ["%@", cam setOn:YES];
]
Run Code Online (Sandbox Code Playgroud)

也有可能将索引i汇入更换X

loops concatenation objective-c nsstring

3
推荐指数
1
解决办法
668
查看次数

将NSStrings的NSArray与NSStrings的另一个NSArray进行比较

我有两个NSArrays包含NSStrings.我需要测试两个数组是否相等.在这种情况下,相等意味着数组不包含相同的对象,但每个对象isEqualToString在与其对应物进行比较时返回true .如果一个项目包含的项目多于另一个项目,或者项目的顺序不同,则数组也不相等.

我可以假设isEqualToArray在这里不会帮助我吗?

同样,我没有看到使用NSSet它的方法将满足所有标准.

我如何测试这两个数组的相等性?

cocoa objective-c nsstring nsarray

3
推荐指数
1
解决办法
1485
查看次数

有没有一种简单的方法将NSString拆分成一个字符数组?

有没有一种简单的方法将NSString拆分成一个字符数组?如果结果类型是NSString本身的集合,每个只有一个字符,那将是最好的.

是的,我知道我可以循环执行此操作,但我想知道是否有更快的方法可以使用C#中的LINQ以任何现有方法或函数执行此操作.

例如

// I have this...
 NSString * fooString = @"Hello";

// And want this...
NSArray * fooChars; // <-- Contains the NSStrings, @"H", @"e", @"l", @"l" and @"o"
Run Code Online (Sandbox Code Playgroud)

objective-c nsstring nsarray

3
推荐指数
1
解决办法
1504
查看次数

当stringWithFormat格式没有类型占位符但有参数时会发生什么

假设我有这样的方法

+ (NSString *)stringWithObject:(id)object format:(NSString *)format
{
    NSString *string = [NSString stringWithFormat:format, object];

    NSLog(@"%@", string);

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

object参数是从来没有nil,但传递到方法的format参数可能要么是

NSString *formatWithPlaceholder = @"object: %@"
Run Code Online (Sandbox Code Playgroud)

要么

NSString *formatWithoutPlaceholder = @"No object";
Run Code Online (Sandbox Code Playgroud)

所以如果formatWithoutPlaceholder作为格式参数传递给方法,控制台输出是正确的,没有警告或错误,但这会导致其他问题吗?我觉得这样的用法有点不对劲stringWithFormat:.

objective-c nsstring stringwithformat

3
推荐指数
1
解决办法
147
查看次数

在textview iOS中的属性字符串末尾添加一个nsstring

我有一个像" Hello There "这样的文本,它将是一个红色的属性字符串.然后在该属性字符串的末尾,我想附加一个nsstring'你是谁?' 但每当我附加一个nsstring时,整个字符串就变成了普通的nsstring,并且删除了属性字符串的属性.我到目前为止的尝试:

NSMutableAttributedString *attributeString = [[NSMutableAttributedString alloc] initWithString:@"Hello There"];
[attributeString addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0,[attributeString length])];

NSMutableAttributedString *previousAttrString = [[NSMutableAttributedString alloc] initWithString:messageTextView.text];

[previousAttrString insertAttributedString: attributeString atIndex:location];
messageTextView.attributedText = previousAttrString;
messageTextView.font = [UIFont fontWithName:@"Helvetica" size:15];

NSString *messageWithContact = [NSString stringWithFormat: @"%@ %@", messageTextView.text, @"Who are you?"];
messageTextView.text=messageWithContact;
Run Code Online (Sandbox Code Playgroud)

我做错了什么?请帮我.

objective-c nsstring nsattributedstring ios

3
推荐指数
1
解决办法
5207
查看次数

如何限制UITextView iOS中的字符

我有一个UITextView,我想限制用户可以输入的字符数.如果文本字段为空但我没有运气,我也试图显示警告.

textview.h

@property (nonatomic,strong) IBOutlet UITextView *textField;
@property (nonatomic, retain) NSString *userText;

textview.m

- (IBAction)next:(id)sender {

    self.userText = self.textField.text;

    if ([self.textField.text length] == 0) {
            UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error!"
                                                                message:@"Enter some text"
                                                               delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
            [alertView show];
        }
}
Run Code Online (Sandbox Code Playgroud)

这是文本限制方法似乎不起作用,

- (BOOL)textView:(UITextView *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{

    if(range.length + range.location > textField.text.length)
    {
        return NO;

    } else {

    NSUInteger newLength = [textField.text length] + [string length] - range.length;
    return newLength <= 70;
    return (textField.text.length <= 70);
}
}
Run Code Online (Sandbox Code Playgroud)

objective-c nsstring uitextview nsinteger ios

3
推荐指数
1
解决办法
8062
查看次数