objective-c - obj-c 到 Swift 转换代码

标签 objective-c swift

所以我正在尝试将一些 obj-c 代码转换为 swift,但我被困在其中的一部分。 我怎样才能 swift 做这样的事情?

- (void)sometMethod:(NSString *)s {
NSString * crlfString = [s stringByAppendingString:@"\r\n"];
uint8_t *buf = (uint8_t *)[crlfString UTF8String];}

真正的问题是这一行

uint8_t *buf = (uint8_t *)[crlfString UTF8String];

最佳答案

你想用 UTF-8 缓冲区做什么?通常,将字符串直接转换为 NSData 对象会更方便。但你也可以将你的 Obj-C 代码一一翻译成 Swift。以下是两种变体:

import Foundation

func appendCRLFAndConvertToUTF8_1(s: String) -> NSData {
    let crlfString: NSString = s.stringByAppendingString("\r\n")
    let buffer = crlfString.UTF8String
    let bufferLength = crlfString.lengthOfBytesUsingEncoding(NSUTF8StringEncoding)
    let data = NSData(bytes: buffer, length: bufferLength)
    return data;
}

func appendCRLFAndConvertToUTF8_2(s: String) -> NSData {
    let crlfString = s + "\r\n"
    return crlfString.dataUsingEncoding(NSUTF8StringEncoding)!
}

let s = "Hello 😄"
let data1 = appendCRLFAndConvertToUTF8_1(s)
data1.description

let data2 = appendCRLFAndConvertToUTF8_2(s)
data2.description

data1 == data2

如果您想迭代 UTF-8 代码单元而不处理缓冲区,请使用类似的东西:

for codeUnit in String.utf8 {
    println(codeUnit) 
}

关于objective-c - obj-c 到 Swift 转换代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24907143/

相关文章:

objective-c - 用于具有不同标题和值的弹出窗口的 Cocoa 库

iphone - xcode:如何在编译/构建阶段将文件保存在 "documents"文件夹中(不是通过 "code on run")?

swift - 在 SwiftUI View 中应用 ClipShape 时,背景颜色从安全区域消失

ios - 如何检测 WatchKit 语音转文本输入的语言?

ios - 如何在 xcode 中为 iOS 应用程序制作背景视频?

iphone - [NSString stringWithFormat] 采用什么类型的参数?

ios - 构建时的段错误代码 11 可能是由 Swift 项目中的 Objective-C Singleton 引起的

swift - 从正在运行的计时器更新标签变量

ios - 无法在没有参数的情况下调用类型 'Reachability' 的初始值设定项

swift - 为什么/何时在 Swift 中为 EnvironmentObjects 允许未初始化的非可选值?