gpt4 book ai didi

ios - 如何导致NSString的dataUsingEncoding : method return nil?

转载 作者:可可西里 更新时间:2023-11-01 00:07:34 30 4
gpt4 key购买 nike

我有一个方法(初始化程序)需要测试:

public convenience init(jsonString: String, identifier: String, editable: Bool) throws {

if let data = jsonString.dataUsingEncoding(NSUTF8StringEncoding) {
try self.init(jsonData: data, identifier: identifier, editable: editable)

} else {
throw ToggleSetJSONStringError.JSONStringEncodingError
}
}

我必须编写一个单元测试来检查它是否正确抛出任意 JSONStringEncodingError。我很难想出这种情况何时会发生。我知道 dataUsingEncoding: 将在字符串无法转换为目标编码时返回 nil 但我不知道实际上是如何导致的。我试过了,f.ex.:

func testThatItThrowsJSONStringEncodingErrorWhenInitializedWithJSONNotConvertibleToUTF8String() {

let jsonNonConvertibleString = "🐱🇩🇪"
do {
let _ = try ToggleSet.init(jsonString: jsonNonConvertibleString, identifier: "not relevant here", editable: true)
XCTFail("ToggleSetError.JSONStringError error should be thrown.")

} catch let e as ToggleSetJSONStringError {
XCTAssertEqual(e, ToggleSetJSONStringError.JSONStringEncodingError)
}
catch {
XCTFail("Wrong error thrown, should be: ToggleSetError.JSONStringEncodingError")
}
}

但是仍然没有抛出上述错误。对于不可转换为 UTF8 编码的字符串有什么创意吗?

最佳答案

任何 NSString 都可以编码为 UTF-8,因此无法使用该编码获得 nil

NSString dataUsingEncoding 方法获取 nil 的唯一方法是使用不支持给定字符串的编码,例如 ASCII 编码,字符串包含表情符号字符。

关于ios - 如何导致NSString的dataUsingEncoding : method return nil?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36984807/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com