将 charAtIndex 分配给 stringWithCharacters 会给出无效的转换警告和错误的访问错误
Assigning charAtIndex to stringWithCharacters gives invalid cast warning and bad access error
我正在尝试从名字+姓氏中获取名字和姓氏。
int loop=0;
NSMutableString *firstname = [[NSMutableString alloc]init];
NSMutableString *fullName = [[NSMutableString alloc]initWithString:@"Anahita+Havewala"];
for (loop = 0; ([fullName characterAtIndex:loop]!='+'); loop++) {
[firstname appendString:[NSString stringWithCharacters:(const unichar *)[fullName characterAtIndex:loop] length:1]];
}
NSLog(@"%@",firstname);
我尝试从 unichar 类型转换为 const unichar* 因为 characterAtIndex returns 一个 unichar 但 stringWithCharacters 接受一个 const unichar。
当遇到此行时,这会导致从较小的整数类型警告转换和应用程序崩溃(访问错误)。
为什么Objective C中的字符串操作这么复杂?
您可以使用 componentsSeparatedByString: 方法轻松获取名字和姓氏。
NSMutableString *fullName = [[NSMutableString alloc]initWithString:@"Anahita+Havewala"];
NSArray *components = [fullName componentsSeparatedByString:@"+"];
NSString *firstName = components[0];
NSString *lastName = components[1];
注意:您需要进行适当的数组边界检查。你也可以使用 NSScanner 来达到同样的目的。
试试这个:
NSMutableString *firstname = [[NSMutableString alloc] init];
NSMutableString *fullName = [[NSMutableString alloc] initWithString:@"Anahita+Havewala"];
for (NSUInteger loop = 0; ([fullName characterAtIndex:loop]!='+'); loop++) {
unichar myChar = [fullName characterAtIndex:loop];
[firstname appendString:[NSString stringWithFormat:@"%C", myChar]];
}
NSLog(@"%@", firstname);
我正在尝试从名字+姓氏中获取名字和姓氏。
int loop=0;
NSMutableString *firstname = [[NSMutableString alloc]init];
NSMutableString *fullName = [[NSMutableString alloc]initWithString:@"Anahita+Havewala"];
for (loop = 0; ([fullName characterAtIndex:loop]!='+'); loop++) {
[firstname appendString:[NSString stringWithCharacters:(const unichar *)[fullName characterAtIndex:loop] length:1]];
}
NSLog(@"%@",firstname);
我尝试从 unichar 类型转换为 const unichar* 因为 characterAtIndex returns 一个 unichar 但 stringWithCharacters 接受一个 const unichar。
当遇到此行时,这会导致从较小的整数类型警告转换和应用程序崩溃(访问错误)。
为什么Objective C中的字符串操作这么复杂?
您可以使用 componentsSeparatedByString: 方法轻松获取名字和姓氏。
NSMutableString *fullName = [[NSMutableString alloc]initWithString:@"Anahita+Havewala"];
NSArray *components = [fullName componentsSeparatedByString:@"+"];
NSString *firstName = components[0];
NSString *lastName = components[1];
注意:您需要进行适当的数组边界检查。你也可以使用 NSScanner 来达到同样的目的。
试试这个:
NSMutableString *firstname = [[NSMutableString alloc] init];
NSMutableString *fullName = [[NSMutableString alloc] initWithString:@"Anahita+Havewala"];
for (NSUInteger loop = 0; ([fullName characterAtIndex:loop]!='+'); loop++) {
unichar myChar = [fullName characterAtIndex:loop];
[firstname appendString:[NSString stringWithFormat:@"%C", myChar]];
}
NSLog(@"%@", firstname);