我在gdb中测试了这个表达式:
(gdb) p (int)[@"-1" floatValue]
$2 = 1
Run Code Online (Sandbox Code Playgroud)
但
(gdb) p (int)((float)[@"-1" floatValue])
$7 = -1
Run Code Online (Sandbox Code Playgroud)
按照我的预期出来
为什么第一个表达式不返回-1?另外,什么是返回类型[@"-1" floatValue]?
我正在制作一个ios应用程序,并且无法使用switch语句查看是否按下了UIButton元素.这就是我希望最终产品发挥作用的人:我有多个无色图像(无色我指的是白色,UIImage).当点击未着色的图像时,子视图打开时带有彩色框(UIButton,其中24个,每个都有单独的颜色).选择彩色框按钮并按下工具栏上的后退按钮时,子视图将关闭,原始视图将重新显示,而未显示的图像(选择用于打开子视图的图像)现在使用在子视图中选择的所需颜色进行着色.
我想使用switch语句来查找哪个未着色的图像和选择的颜色(所有UIButton元素).我不知道在switch语句中将什么作为表达式放置,因为我正在处理UIButtons.switch语句的其余部分比较UIButton元素的值,看它是否等于YES(当按下按钮时),如果是,则返回一个字符串.我还想知道如何将IBAction连接到UIImage(因此当点击图像时,子视图打开).
基本上,我有一个46个字符的NSString,我转换为NSData.我需要将字符串填充为48个字符.它只是在NSString的末尾加上''才能起作用.所以,我只是增加了NSData的长度:
NSString *string = @"__46characterlongstring__";
NSData *d = [string dataUsingEncoding:NSUTF8StringEncoding];
NSLog(@"d: %@", d);
NSData *data = [NSData dataWithBytes:[d bytes] length:48];
NSLog(@"data: %@", data);
Run Code Online (Sandbox Code Playgroud)
名为'd'的NSData返回<723d6c67 6e267573 65726e61 6d653d64 61766964 77617473 6f6e3936 26706173 73776f72 643d736e 30307079 6f32>
名为'data'的NSData返回<723d6c67 6e267573 65726e61 6d653d64 61766964 77617473 6f6e3936 26706173 73776f72 643d736e 30307079 6f32_ >,其中_是4个随机字符(通常是数字)
我怎样才能确保'数据'返回<723d6c67 6e267573 65726e61 6d653d64 61766964 77617473 6f6e3936 26706173 73776f72 643d736e 30307079 6f320000> - 4 0而不是4个随机字符?
谢谢.
在我的应用程序中,我必须使用NFD Unicode系统规范化NSString.我怎样才能做到这一点?我需要转换用户输入的字符串作为规范化的字符串,我必须计算一个数字.谁能帮我?
NSString是非常友好的unicode.所以通常当我想创建一个包含unicode的字符串时,我可以将它直接弹出到字符串文字中,如下所示:
NSString *myString = @"Press ?Q to quit…";
Run Code Online (Sandbox Code Playgroud)
但这不适用于使用行分隔符(AKA:
NSLineSeparatorCharacter,Unicode U + 2028,UTF-8 E2 80 A8).编译器(正确地)将其解释为换行符,这是C语法中的禁忌.
-stringWithFormat:也没有帮助.试
NSString *myString = [NSString stringWithFormat@"This is%don two lines…", NSLineSeparatorCharacter];
Run Code Online (Sandbox Code Playgroud)
给了我一个字符串"This is8232on two lines ......".
为什么这不起作用?无论弦的长度如何,它总是返回18.有这个主题,但不是一个明确的答案.
NSString * t = @"<insert super super long string here>";
CGSize size = [t sizeWithFont:[UIFont systemFontOfSize:14.0] forWidth:285 lineBreakMode:UILineBreakModeWordWrap];
NSLog(@"size.height is %f and text is %@", size.height, t);
Run Code Online (Sandbox Code Playgroud)
谢谢,
托德
我有一个字符串Hello-World-Test,我想只用第一个破折号拆分这个字符串.
字符串1:Hello String 2:World-Test
做这个的最好方式是什么?我现在正在做的是使用componentsSeparatedByString,获取数组中的第一个对象并将其设置为String 1,然后使用String 1的长度作为起始索引执行substring.
谢谢!
我是Objective-C的新手,但在其他更高级的语言方面经验丰富.我想通过删除所有非数字字符来规范化字符串.换句话说,给定输入字符串"206-555-1212",归一化结果应为"2065551212".下面的代码片段有效,但鉴于我在其他语言中的经验似乎有点矫枉过正.有没有更好的方法呢?
编辑:输入字符串"(206)555-1212","206.555.1212","206 555 1212"等也应返回相同的标准化结果.
NSString * normalize(NSString * number)
{
NSString *normalizedNumber = @"";
NSString *tmpString = nil;
NSRange searchRange;
NSRange resultRange;
searchRange.location = 0;
searchRange.length = number.length;
while (0 < searchRange.length)
{
resultRange = [number rangeOfCharacterFromSet:[NSCharacterSet decimalDigitCharacterSet]
options:NSLiteralSearch
range:searchRange];
tmpString = [number substringWithRange:resultRange];
normalizedNumber = [normalizedNumber stringByAppendingString:tmpString];
searchRange.location = resultRange.location + resultRange.length;
searchRange.length = number.length - searchRange.location;
}
return normalizedNumber;
}
Run Code Online (Sandbox Code Playgroud) 首先,我对编码很新,所以如果这是一个愚蠢的问题请耐心等待.我不知道如何将int array [10]之类的soemthing转换为单个NSString.我一直在寻找解决方案,但到目前为止,我所看到的只是从数组转换为字符串数组.
我试过的第一件事就是
NSString *String=[NSString stringWithFormat @"%i",array];
Run Code Online (Sandbox Code Playgroud)
但问题是,我知道我可以做类似的事情
NSString *String[NSString stringWithFormat @"%i%i%i...",array[0],array[1],array[2],.....];
Run Code Online (Sandbox Code Playgroud)
但是我试图避免这种情况,因为我将对10个以上的变量进行此操作,并且我将使用单独命名的变量进行相当多的操作
我最近试图制作一个能够编码和解码 Base64 以及其他“语言”(如十六进制和二进制)的 iOS 应用程序。我试图制作一个自动解码器(能够自动检测“语言”)。但是,当我使用 Base64 时,自动解码器似乎无法检测到有效的 Base64,因为 Base64 字符串中有换行符。我的 Base64 检测代码如下所示:
-(BOOL)isBase64Data:(NSString *)input
{
if ([input length] % 4 == 0) {
static NSCharacterSet *invertedBase64CharacterSet = nil;
if (invertedBase64CharacterSet == nil) {
invertedBase64CharacterSet = [[NSCharacterSet characterSetWithCharactersInString:@"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="]invertedSet];
}
return [input rangeOfCharacterFromSet:invertedBase64CharacterSet options:NSLiteralSearch].location == NSNotFound;
}
return NO;
}
Run Code Online (Sandbox Code Playgroud)
只是为了提供更多信息,这是我在 NSString 中检测“语言”类型的方法。
-(NSInteger)detectType:(BOOL)base64 hexadecimal:(BOOL)hex binary:(BOOL)binary
{
//Make sure the checking of characters are in this order!
if (binary) {
return 0; //Type 0 means binary
}
else if (hex) {
return …Run Code Online (Sandbox Code Playgroud)