标签: nsstring

为什么(int)[@" - 1"floatValue]不返回-1

我在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]

casting objective-c nsstring

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

如何使用switch语句查找是否按下了UIButton?

我正在制作一个ios应用程序,并且无法使用switch语句查看是否按下了UIButton元素.这就是我希望最终产品发挥作用的人:我有多个无色图像(无色我指的是白色,UIImage).当点击未着色的图像时,子视图打开时带有彩色框(UIButton,其中24个,每个都有单独的颜色).选择彩色框按钮并按下工具栏上的后退按钮时,子视图将关闭,原始视图将重新显示,而未显示的图像(选择用于打开子视图的图像)现在使用在子视图中选择的所需颜色进行着色.

我想使用switch语句来查找哪个未着色的图像和选择的颜色(所有UIButton元素).我不知道在switch语句中将什么作为表达式放置,因为我正在处理UIButtons.switch语句的其余部分比较UIButton元素的值,看它是否等于YES(当按下按钮时),如果是,则返回一个字符串.我还想知道如何将IBAction连接到UIImage(因此当点击图像时,子视图打开).

switch-statement uibutton nsstring uiimage ios

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

增加NSData的长度

基本上,我有一个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个随机字符?

谢谢.

iphone objective-c nsstring nsdata

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

使用NFD unicode进行NSString规范化

在我的应用程序中,我必须使用NFD Unicode系统规范化NSString.我怎样才能做到这一点?我需要转换用户输入的字符串作为规范化的字符串,我必须计算一个数字.谁能帮我?

iphone unicode objective-c nsstring unicode-normalization

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

如何创建包含NSLineSeparatorCharacter的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 ......".

cocoa nsstring

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

sizewithfont:forwidth:linebreakmode

为什么这不起作用?无论弦的长度如何,它总是返回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)

谢谢,

托德

iphone objective-c nsstring ios

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

拆分NSString并限制响应

我有一个字符串Hello-World-Test,我想只用第一个破折号拆分这个字符串.

字符串1:Hello String 2:World-Test

做这个的最好方式是什么?我现在正在做的是使用componentsSeparatedByString,获取数组中的第一个对象并将其设置为String 1,然后使用String 1的长度作为起始索引执行substring.

谢谢!

nsstring ios

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

从Obj-C中的字符串中提取数字

我是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)

string objective-c normalization nsstring

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

如何在Objective c中将int数组转换为NSString?

首先,我对编码很新,所以如果这是一个愚蠢的问题请耐心等待.我不知道如何将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个以上的变量进行此操作,并且我将使用单独命名的变量进行相当多的操作

arrays int objective-c nsstring ios

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

检测 NSString 是否为 Base64

我最近试图制作一个能够编码和解码 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)

base64 objective-c nsstring ios ios6

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