这段代码......
NSString * s = [[NSString alloc] initWithString:@"Hello, World"];
s = s.lowercaseString;
NSLog(@"%@", s);
Run Code Online (Sandbox Code Playgroud)
...允许使用点表示法,但是强类型.这段代码......
id s = [[NSString alloc] initWithString:@"Hello, World"];
s = [s lowercaseString];
NSLog(@"%@", s);
Run Code Online (Sandbox Code Playgroud)
...是弱类型的,需要使用方括号.
除此之外,使用一个优于另一个是否有任何优势?
我有一个API,它将XML请求发送到服务器:
<?xml version="1.0" encoding="UTF-8"?>
<request type="handle" action="update">
<userdata>
<username>YourUsername</username>
<password>YourPassword</password>
</userdata>
<handledata type="PERSON" id="HandleId">
<name>Mustermann</name>
<firstname>Max</firstname>
<organization>Firma KG</organization>
<street>Musterstrasse 1</street>
<postalcode>11111</postalcode>
<city>Musterstadt</city>
<state>Niedersachsen</state>
<country>DE</country>
<email>email@adresse.de</email>
<phone>+43-111-111111</phone>
<fax>+43-111-111111</fax>
<remarks>remarks</remarks>
</handledata>
</request>
Run Code Online (Sandbox Code Playgroud)
我该如何在iPhone上执行此操作?
如何在NSString之间追加字符串的值?
例如:
NSString* str1 = @"Hello";
NSString* str2 = @"Hi.."/*add contents of str1*/@"how r u??";
Run Code Online (Sandbox Code Playgroud)
请告诉我如何实现这一目标?
所以我使用的时候似乎遇到了一些奇怪的行为NSString的-sizeWithFont取决于我是否正在调用它在iPhone模拟器或实际设备的方法调用的家庭.
简单地说,当-sizeWithFont:constrainedToSize:lineBreakMode:方法调用的接收者是nil,CGSize在模拟器上传回的结果是{0, 0}.但是,在设备上,返回结果与CGSize我在方法调用中指定的值相同,作为constrainedToSize:参数.请参阅以下日志语句:
模拟器:
someString: (null)
someStringSize: {0, 0}
Run Code Online (Sandbox Code Playgroud)
设备:
someString: (null)
someStringSize: {185, 3.40282e+38}
Run Code Online (Sandbox Code Playgroud)
模拟器上的行为是我所期望的.并不是说这个问题很难避免,但是1)我有点困惑为什么这个函数系列在模拟器和实际设备上表现不同,以及2)为什么在nil接收器上调用方法会返回一个特定的,确定的结果?
感谢您提供的任何指示或见解!
编辑:我想我应该提到我正在构建3.1 SDK.
我无法弄清楚为什么它不起作用,我有一个NSString,我需要转换为NSNumber(将其保存到核心数据),例如
NSLog(stringNum);
Run Code Online (Sandbox Code Playgroud)
返回1
NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
NSNumber *myNumber = [f numberFromString:stringNum];
[f release];
NSLog(@"myNumber = %i", myNumber);
Run Code Online (Sandbox Code Playgroud)
返回120882496或类似的内容
我错过了什么?感谢帮助
目标C:如何获取NSString的第一个字母的Ascii Integer值?
我正在尝试制作一个标签,说明事件发生了多少天.我想计算今天的日期和事件日期之间的差异.我正在使用此代码,它给我-4600.它工作正常,直到我使用今天的日期.
NSDateFormatter *f = [[NSDateFormatter alloc] init];
[f setDateFormat:@"yyyy-MM-dd"];
NSDate *startDate = [NSDate date];
NSDate *endDate = [f dateFromString:end];
NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [gregorianCalendar components:NSDayCalendarUnit
fromDate:startDate
toDate:endDate
options:0];
return components.day;
return components.day;
Run Code Online (Sandbox Code Playgroud) 我试图找到Tapped String in UITextView.我试过了.UIDataDetectorTypeLink但它没有用.我也不确定是否有可能检测到String.我正在使用UITextView自定义UITableViewCell.从那我我试图检测轻拍的字符串.以下是我试过的示例代码.任何人都可以帮我找到我做错了什么,我怎么能解决这个问题?即使不可能,我该如何解决这个问题呢?
NSMutableArray *sampleArray = [[NSMutableArray alloc]init];
NSMutableString *mutableString = [[NSMutableString alloc]init];
NSMutableAttributedString * string;
sampleArray = [[postArray valueForKey:@"hash_tags"] objectAtIndex:indexPath.row];
for(NSString *sampleString in sampleArray){
if (mutableString.length == 0) {
[mutableString appendString:sampleString];
}else{
[mutableString appendString:[NSString stringWithFormat:@", %@",sampleString]];
}
string = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"%@",mutableString]];
// [string addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor] range:NSMakeRange(0,[string length])];
}
NSDictionary *linkAttributes = @{NSForegroundColorAttributeName: [UIColor colorWithRed:5.0f/255.0f green:107.0f/255.0f blue:153.0f/255.0f alpha:1.0f], NSUnderlineColorAttributeName: [UIColor greenColor],NSUnderlineStyleAttributeName: @(NSUnderlinePatternSolid)};
[string addAttribute:NSLinkAttributeName
value:string
range:NSMakeRange(0, [string …Run Code Online (Sandbox Code Playgroud) 我已经绞尽脑汁待了一个星期.如果有人可以提供一些方向,我将非常感激.
我已经大大简化了这些基本步骤的问题.
这是代码:
NSString * data = @"JVBERi0xLjIgDQol4uPP0w0KIA0KOSAwIG9iag0KPDwNCi9MZW5ndGggMTAgMCBSDQovRmlsdGVyIC9GbGF0ZURlY29kZSANCj4-DQpzdHJlYW0NCkiJzZDRSsMwFIafIO_we6eyZuckTZPtbtIWBi0UjYKQGxFbJmpliuLb26QM8X6CJBfJyf99ycmFF6xJagWrrMxzwJeCEMd-gFjWBC1dLPeCJFkbl_fTKfwnTqt1CK0xIZyEwFYZ2T-fwT8KnmIxUmJinNKJyUiyW7mZVEQ6I54m2K3ZzFiupvgPaee7JHFuZqyDvxuGBbZdu8D1y-7jYf-2e__C2KOJm9dxfEqqTHMRXZlR0hRJuKwZau6EJa-MOdjpYN_gprq8xVW7aRp0ZY162ySbktoWvxpPZULGxJLSr-G4UuX-QHrcl_rz_2eqvPgGPPWhqg0KZW5kc3RyZWFtDQplbmRvYmoNCjEwIDAgb2JqDQoyNDYNCmVuZG9iag0KNCAwIG9iag0KPDwNCi9UeXBlIC9QYWdlDQovUGFyZW50IDUgMCBSDQovUmVzb3VyY2VzIDw8DQovRm9udCA8PA0KL0YwIDYgMCBSIA0KL0YxIDcgMCBSIA0KPj4NCi9Qcm9jU2V0IDIgMCBSDQo-Pg0KL0NvbnRlbnRzIDkgMCBSDQo-Pg0KZW5kb2JqDQo2IDAgb2JqDQo8PA0KL1R5cGUgL0ZvbnQNCi9TdWJ0eXBlIC9UcnVlVHlwZQ0KL05hbWUgL0YwDQovQmFzZUZvbnQgL0FyaWFsDQovRW5jb2RpbmcgL1dpbkFuc2lFbmNvZGluZw0KPj4NCmVuZG9iag0KNyAwIG9iag0KPDwNCi9UeXBlIC9Gb250DQovU3VidHlwZSAvVHJ1ZVR5cGUNCi9OYW1lIC9GMQ0KL0Jhc2VGb250IC9Cb29rQW50aXF1YSxCb2xkDQovRmlyc3RDaGFyIDMxDQovTGFzdENoYXIgMjU1DQovV2lkdGhzIFsgNzUwIDI1MCAyNzggNDAyIDYwNiA1MDAgODg5IDgzMyAyMjcgMzMzIDMzMyA0NDQgNjA2IDI1MCAzMzMgMjUwIA0KMjk2IDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCAyNTAgMjUwIDYwNiA2MDYgNjA2IA0KNDQ0IDc0NyA3NzggNjY3IDcyMiA4MzMgNjExIDU1NiA4MzMgODMzIDM4OSAzODkgNzc4IDYxMSAxMDAwIDgzMyANCjgzMyA2MTEgODMzIDcyMiA2MTEgNjY3IDc3OCA3NzggMTAwMCA2NjcgNjY3IDY2NyAzMzMgNjA2IDMzMyA2MDYgDQo1MDAgMzMzIDUwMCA2MTEgNDQ0IDYxMSA1MDAgMzg5IDU1NiA2MTEgMzMzIDMzMyA2MTEgMzMzIDg4OSA2MTEgDQo1NTYgNjExIDYxMSAzODkgNDQ0IDMzMyA2MTEgNTU2IDgzMyA1MDAgNTU2IDUwMCAzMTAgNjA2IDMxMCA2MDYgDQo3NTAgNTAwIDc1MCAzMzMgNTAwIDUwMCAxMDAwIDUwMCA1MDAgMzMzIDEwMDAgNjExIDM4OSAxMDAwIDc1MCA3NTAgDQo3NTAgNzUwIDI3OCAyNzggNTAwIDUwMCA2MDYgNTAwIDEwMDAgMzMzIDk5OCA0NDQgMzg5IDgzMyA3NTAgNzUwIA0KNjY3IDI1MCAyNzggNTAwIDUwMCA2MDYgNTAwIDYwNiA1MDAgMzMzIDc0NyA0MzggNTAwIDYwNiAzMzMgNzQ3IA0KNTAwIDQwMCA1NDkgMzYxIDM2MSAzMzMgNTc2IDY0MSAyNTAgMzMzIDM2MSA0ODggNTAwIDg4OSA4OTAgODg5IA0KNDQ0IDc3OCA3NzggNzc4IDc3OCA3NzggNzc4IDEwMDAgNzIyIDYxMSA2MTEgNjExIDYxMSAzODkgMzg5IDM4OSANCjM4OSA4MzMgODMzIDgzMyA4MzMgODMzIDgzMyA4MzMgNjA2IDgzMyA3NzggNzc4IDc3OCA3NzggNjY3IDYxMSANCjYxMSA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA3NzggNDQ0IDUwMCA1MDAgNTAwIDUwMCAzMzMgMzMzIDMzMyANCjMzMyA1NTYgNjExIDU1NiA1NTYgNTU2IDU1NiA1NTYgNTQ5IDU1NiA2MTEgNjExIDYxMSA2MTEgNTU2IDYxMSANCjU1NiBdDQovRW5jb2RpbmcgL1dpbkFuc2lFbmNvZGluZw0KL0ZvbnREZXNjcmlwdG9yIDggMCBSDQo-Pg0KZW5kb2JqDQo4IDAgb2JqDQo8PA0KL1R5cGUgL0ZvbnREZXNjcmlwdG9yDQovRm9udE5hbWUgL0Jvb2tBbnRpcXVhLEJvbGQNCi9GbGFncyAxNjQxOA0KL0ZvbnRCQm94IFsgLTI1MCAtMjYwIDEyMzYgOTMwIF0NCi9NaXNzaW5nV2lkdGggNzUwDQovU3RlbVYgMTQ2DQovU3RlbUggMTQ2DQovSXRhbGljQW5nbGUgMA0KL0NhcEhlaWdodCA5MzANCi9YSGVpZ2h0IDY1MQ0KL0FzY2VudCA5MzANCi9EZXNjZW50IDI2MA0KL0xlYWRpbmcgMjEwDQovTWF4V2lkdGggMTAzMA0KL0F2Z1dpZHRoIDQ2MA0KPj4NCmVuZG9iag0KMiAwIG9iag0KWyAvUERGIC9UZXh0ICBdDQplbmRvYmoNCjUgMCBvYmoNCjw8DQovS2lkcyBbNCAwIFIgXQ0KL0NvdW50IDENCi9UeXBlIC9QYWdlcw0KL01lZGlhQm94IFsgMCAwIDYxMiA3OTIgXQ0KPj4NCmVuZG9iag0KMSAwIG9iag0KPDwNCi9DcmVhdG9yICgxNzI1LmZtKQ0KL0NyZWF0aW9uRGF0ZSAoMS1KYW4tMyAxODoxNVBNKQ0KL1RpdGxlICgxNzI1LlBERikNCi9BdXRob3IgKFVua25vd24pDQovUHJvZHVjZXIgKEFjcm9iYXQgUERGV3JpdGVyIDMuMDIgZm9yIFdpbmRvd3MpDQovS2V5d29yZHMgKCkNCi9TdWJqZWN0ICgpDQo-Pg0KZW5kb2JqDQozIDAgb2JqDQo8PA0KL1BhZ2VzIDUgMCBSDQovVHlwZSAvQ2F0YWxvZw0KL0RlZmF1bHRHcmF5IDExIDAgUg0KL0RlZmF1bHRSR0IgIDEyIDAgUg0KPj4NCmVuZG9iag0KMTEgMCBvYmoNClsvQ2FsR3JheQ0KPDwNCi9XaGl0ZVBvaW50IFswLjk1MDUgMSAxLjA4OTEgXQ0KL0dhbW1hIDAuMjQ2OCANCj4-DQpdDQplbmRvYmoNCjEyIDAgb2JqDQpbL0NhbFJHQg0KPDwNCi9XaGl0ZVBvaW50IFswLjk1MDUgMSAxLjA4OTEgXQ0KL0dhbW1hIFswLjI0NjggMC4yNDY4IDAuMjQ2OCBdDQovTWF0cml4IFswLjQzNjEgMC4yMjI1IDAuMDEzOSAwLjM4NTEgMC43MTY5IDAuMDk3MSAwLjE0MzEgMC4wNjA2IDAuNzE0MSBdDQo-Pg0KXQ0KZW5kb2JqDQp4cmVmDQowIDEzDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDIxNzIgMDAwMDAgbg0KMDAwMDAwMjA0NiAwMDAwMCBuDQowMDAwMDAyMzYzIDAwMDAwIG4NCjAwMDAwMDAzNzUgMDAwMDAgbg0KMDAwMDAwMjA4MCAwMDAwMCBuDQowMDAwMDAwNTE4IDAwMDAwIG4NCjAwMDAwMDA2MzMgMDAwMDAgbg0KMDAwMDAwMTc2MCAwMDAwMCBuDQowMDAwMDAwMDIxIDAwMDAwIG4NCjAwMDAwMDAzNTIgMDAwMDAgbg0KMDAwMDAwMjQ2MCAwMDAwMCBuDQowMDAwMDAyNTQ4IDAwMDAwIG4NCnRyYWlsZXINCjw8DQovU2l6ZSAxMw0KL1Jvb3QgMyAwIFINCi9JbmZvIDEgMCBSDQovSUQgWzw0NzE0OTUxMDQzM2RkNDg4MmYwNWY4YzEyNDIyMzczND48NDcxNDk1MTA0MzNkZDQ4ODJmMDVmOGMxMjQyMjM3MzQ-XQ0KPj4NCnN0YXJ0eHJlZg0KMjcyNg0KJSVFT0YNCg==";
NSData *decodedData = [[NSData alloc] initWithBase64EncodedString:data options:0];
NSLog(@"Decode String Value: %@", decodedData); //prints null .. and thus the problem
Run Code Online (Sandbox Code Playgroud)
为了给问题更多的上下文,数据来自gmail rest api附件.附件以base64编码(MIME类型为pdf).通过获取该附件来检索上面的字符串.我能够通过字面意思正确地解析它在python中:base64.urlsafe_b64decode(data)..所以我知道字符串没有格式错误..我在iOS上做错了什么..只是无法弄清楚到底是什么.
无论如何,如果有人可以帮助我解决为什么iOS上的解码失败,你将成为我个人的英雄和救世主.
我试图通过调用获得a的long值,但不响应.然而,它确实回应和.NSStringlongValueNSStringlongValueintValuelongLongValue
这是预期的行为吗?如果是,为什么?我看不到它,以响应合乎逻辑的理由intValue和longLongValue,但不会longValue.
我可以添加一个类别NSString并添加:
-(long)longValue{
return (long)[self longLongValue];
}
Run Code Online (Sandbox Code Playgroud)
这解决了我的问题.但我仍然不明白为什么这不是默认的实现.
nsstring ×10
objective-c ×7
ios ×4
iphone ×4
base64 ×1
fonts ×1
layout ×1
memory ×1
nsdate ×1
nsnumber ×1
null ×1
request ×1
uitableview ×1
uitextview ×1
xml ×1