以下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".
我错过了什么吗?或者这是一个已知的问题?推荐的解决方法是什么?提前致谢.
我想在我已经拥有的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) 对于变音符号无关的全文搜索功能,我用下面的代码重音符号的字符转换像é或者Ö到他们的小写非重音形式e和o
[[inputString stringByFoldingWithOptions:
NSCaseInsensitiveSearch
+ NSDiacriticInsensitiveSearch
+ NSWidthInsensitiveSearch
locale: [NSLocale currentLocale]] lowercaseString];
Run Code Online (Sandbox Code Playgroud)
这有效.但是,我发现无法转换基本形式由多个字符组成的特殊字符,如法语œ(如"sœur")或德语ß(如"Fluß").我想分别将它们转换成oe和ss.我没有找到stringByFoldingWithOptions的标志,也没有在网上找到任何东西.
编辑
ß实际上是由上面的代码正确处理.它转换为ss.
我正在经历这种奇怪的效果,在rangeOfString上调用location时它应该返回一个非常大的值,当它不应该...
我的代码看起来像这样:
NSRange range = [string rangeOfString:subString];
NSLog(@"range is %@", NSStringFromRange(range));
Run Code Online (Sandbox Code Playgroud)
这会退出 range is {2147483647, 0}
无法弄清楚为什么.
可能导致此问题的一些事情:
任何帮助非常感谢
这是一些让我感到奇怪的东西:

这可能是一个完全荒谬的问题,但是有可能使用a NSString作为代码行的替代品吗?
for (int i = 0; i < 10: i++){
NSString *cam = @"locXCamProfileSwitch";
["%@", cam setOn:YES];
]
Run Code Online (Sandbox Code Playgroud)
也有可能将索引i汇入更换X?
我有两个NSArrays包含NSStrings.我需要测试两个数组是否相等.在这种情况下,相等意味着数组不包含相同的对象,但每个对象isEqualToString在与其对应物进行比较时返回true .如果一个项目包含的项目多于另一个项目,或者项目的顺序不同,则数组也不相等.
我可以假设isEqualToArray在这里不会帮助我吗?
同样,我没有看到使用NSSet它的方法将满足所有标准.
我如何测试这两个数组的相等性?
有没有一种简单的方法将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) 假设我有这样的方法
+ (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:.
我有一个像" 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)
我做错了什么?请帮我.
我有一个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) nsstring ×10
objective-c ×9
ios ×6
cocoa ×2
iphone ×2
nsarray ×2
diacritics ×1
loops ×1
nsinteger ×1
uiimage ×1
uitextview ×1