无论如何,Swift断言以字符串形式打印变量

Tob*_*ias 9 assert swift

背景: 在Objective-C中,我将创建包含调试信息的断言:

NSAssert(poetCount > 5, "Expected poetCount > 5; Actual: %d", poetCount);
Run Code Online (Sandbox Code Playgroud)

但是,assertSwift中的全局函数似乎不允许这样,因为message参数是一个StaticString.所以我不能这样做:

assert(NSFileManager.defaultManager().fileExistsAtPath(fullpath), 
"Expected: File to Exist @ \(fullpath)")
Run Code Online (Sandbox Code Playgroud)

问题:是否存在assert不需要静态字符串的替代函数,或者NSAssert如果我想提供额外信息以使调试更容易,我应该继续使用吗?

mac*_*ome 9

我认为你现在不能因为StaticString参数.我尝试用let设置消息字符串,但你甚至无法在其中放置变量.它必须是引号中的StaticString.

对于它的价值,Apple的示例代码遵循相同的模式:

assert(listItems && listItems!.count == 1, "There must be exactly one moved item.")
Run Code Online (Sandbox Code Playgroud)