刚开始学习objective-c,并试图将字节数组转换为UTF8 NSString,但一直为nil/null。
这是缩写的代码示例。
enum {
TMessageType_CALL = 1,
TMessageType_REPLY = 2,
TMessageType_EXCEPTION = 3,
TMessageType_ONEWAY = 4
};
int32_t VERSION_1 = 0x80010000;
int value = VERSION_1 | TMessageType_CALL;
uint8_t buff[4];
buff[0] = 0xFF & (value >> 24);
buff[1] = 0xFF & (value >> 16);
buff[2] = 0xFF & (value >> 8);
buff[3] = 0xFF & value;
//Convert buff to NSString with offset =0, length =4
Run Code Online (Sandbox Code Playgroud)
我尝试了以下方法。
NSString *t = [[NSString alloc] initWithBytes:buff length:4 encoding:NSUTF8StringEncoding];
NSString *t1 = [NSString stringWithUTF8String:(char *)buff]; …Run Code Online (Sandbox Code Playgroud) 我的函数采用字典参数和可变数量的NSString变量。所有这些组合都放入一个[NSString stringWithFormat:]方法中,并作为NSURLRequest. 该方法如下所示:
- (NSURLRequest *)buildPath:(NSString *)stringPath attributes:(NSString *)attribute, ...
{
va_list list;
NSString *eachObject;
NSMutableArray *args = [NSMutableArray array];
[args addObject:attribute];
va_start(list, attribute);
while ((eachObject = va_arg(list, NSString *))) {
[args addObject:eachObject];
}
va_end(list);
NSString *listOfAttributes = [args componentsJoinedByString:@", "];
NSString *pathURL = _requestString[stringPath];
NSString *path = [NSString stringWithFormat:pathURL, listOfAttributes];
NSURL *url = [NSURL URLWithString:path];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
return request;
}
Run Code Online (Sandbox Code Playgroud)
这是我调用该方法时的样子:
NSURLRequest *request = [_venueService buildPath:@"categories"
attributes:_venueService.clientID, _venueService.clientSecret, _venueService.todaysDate, nil]; …Run Code Online (Sandbox Code Playgroud) objective-c variadic-functions nsstring stringwithformat ios
例如,我可以输入一个表情符号字符代码,例如:
NSString* str = @"";
NSLog(@"%@", str);
Run Code Online (Sandbox Code Playgroud)
将在控制台中看到微笑表情符号。
也许代码编辑器和编译器会在 UTF-8 中交换文字。
现在我在一个完整的 unicode 中工作,我的意思是每个字符 32 位,环境,我有表情符号的 unicode,我想将 32 位 unicode 转换为 NSString 例如:
int charcode = 0x0001F60A;
NSLog(@"%??", charcode);
Run Code Online (Sandbox Code Playgroud)
问题是我应该把什么放在“??” 位置然后我可以将字符代码格式化为表情符号字符串?
顺便说一句,charcode 是一个在编译时无法确定的变量。
我不想将 32 位 int 压缩为 UTF-8 字节,除非这是唯一的方法。
当我尝试将对象添加到可变数组时,我不断收到无法识别的选择器,当在表视图中选择单元格时,我尝试向可变数组添加和删除项目,这是我的代码:
@interface SomeViewController
@property (nonatomic, strong) NSMutableArray *selectedItems;
@end
Run Code Online (Sandbox Code Playgroud)
查看已加载:
-(void)viewDidLoad {
[super viewDidLoad];
self.selectedItems = [[NSMutableArray alloc] init];
}
Run Code Online (Sandbox Code Playgroud)
选择单元格:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
MyCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
[self.selectedItems addObject:[NSString stringWithFormat:@"%@", cell.contactID]];
Run Code Online (Sandbox Code Playgroud)
MyCell 文件上的联系人 ID 属性为:
@property (strong, nonatomic) NSString *contactID;
Run Code Online (Sandbox Code Playgroud)
我不断收到此错误:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayM _fastCStringContents:]: unrecognized selector sent to instance 0x7fc3dd1091b0'
Run Code Online (Sandbox Code Playgroud) 我看到崩溃报告,从中我可以推断 -UTF8String 返回 NULL,但我没有找到任何这样做的字符串。任何人都可以提供一个字符串示例,至少对于某些大于或等于 9.0 的操作系统版本,对于 -UTF8String 返回 NULL?这对于单元测试等来说会很好。
如何使用格式本地化 NSString。
int value = 20;
NSString *str = @"hello";
textLabel.text = [NSString stringWithFormat:@"%d %@", value, str];
Run Code Online (Sandbox Code Playgroud)
我试过
textLabel.text = [NSString stringWithFormat:NSLocalizedString(@"%d %@", @"%d %@"), value, str];
Run Code Online (Sandbox Code Playgroud)
但没有用。任何帮助表示赞赏。
let fullString = "Hello world, there are \(string(07)) continents and \(string(195)) countries."
let range = [NSMakeRange(24,2), NSMakeRange(40,3)]
Run Code Online (Sandbox Code Playgroud)
需要找到整个完整字符串中数字的 NSRange,并且两个数字有可能相同。目前如上所示进行硬编码,消息可以是动态的,而硬编码值将出现问题。
我已经分割了字符串并尝试获取,NSRange因为可能存在相同的值。比如 stringOne 和 stringTwo。
func findNSMakeRange(initialString:String, fromString: String) {
let fullStringRange = fromString.startIndex..<fromString.endIndex
fromString.enumerateSubstrings(in: fullStringRange, options: NSString.EnumerationOptions.byWords) { (substring, substringRange, enclosingRange, stop) -> () in
let start = distance(fromString.startIndex, substringRange.startIndex)
let length = distance(substringRange.startIndex, substringRange.endIndex)
let range = NSMakeRange(start, length)
if (substring == initialString) {
print(substring, range)
}
})
}
Run Code Online (Sandbox Code Playgroud)
收到类似错误Cannot invoke distance with an argument list of …
一个字符串:
"jim@domain.com, bill@domain.com, chad@domain.com, tom@domain.com"
通过手势识别器,我能够获得用户点击的字符(很高兴提供代码,但此时看不到相关性)。
比方说,拍了拍用户o在"chad@domain.com"和性格index是39
鉴于39对index的o,我想获得的字符串开始索引c哪里"chad@domain.com"开始和结束index对m从"com"哪里"chad@domain.com"结束。
换句话说,给定index的character一个String,我需要得到index的left和right我们在遇到空间权前String左侧和comma右侧。
尝试过,但这仅提供字符串中的最后一个单词:
if let range = text.range(of: " ", options: .backwards) {
let suffix = String(text.suffix(from: range.upperBound))
print(suffix) // tom@domain.com
}
Run Code Online (Sandbox Code Playgroud)
我不知道从这里去哪里?
我有一个字符串数组,如下所示:
["Milk","Milkshake","Milk Shake","MilkCream","Milk-Cream"]
Run Code Online (Sandbox Code Playgroud)
如果我搜索“牛奶”,那么结果应该是["Milk","Milk Shake","Milk-Cream"]按词搜索。
谓词为
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"tagName CONTAINS[c] %@",containSearchTerm];
Run Code Online (Sandbox Code Playgroud)
我从上面的数组中得到所有结果。如何使用单词进行匹配?
我找不到NSString sizeWithFont:forWidth:lineBreakMode:方法的文档(参见Kevin Ballard对iPhone SDK开发人员的NSString类参考中的" 调整UILabel(在iPhone SDK中)以适应? " 的答案)文档.我应该在哪里看?
更新:我没有订阅iPhone OS Library文档集,所以我的搜索不起作用.
nsstring ×10
ios ×8
objective-c ×6
swift ×3
encoding ×1
nsarray ×1
nspredicate ×1
nsrange ×1
uitableview ×1
unicode ×1
utf-8 ×1
xcode ×1