当我想检查一个Optional Bool是否为true时,执行此操作不起作用:
var boolean : Bool? = false
if boolean{
}
Run Code Online (Sandbox Code Playgroud)
它导致此错误:
可选类型'@IvalueBool?' 不能用作布尔值; 测试'!= nil'而不是
我不想检查零; 我想检查返回的值是否为true.
if boolean == true如果我正在使用Optional Bool,我是否总是必须这样做?
由于Optionals不再符合BooleanType,编译器是否应该知道我想检查Bool的值?
我正在Swift中创建一个NSManagedObject子类,当我创建一个类型为Int,Float或Double的可选属性时,我得到一个错误(也许是其他我没试过的).
@NSManaged var number: Float? //error:Property cannot be marked @NSManaged because its type cannot be represented in Objective-C
@NSManaged var anotherNumber: Float //no error
@NSManaged var array: NSArray? //no error
@NSManaged var anotherArray: Array<String>? //no error
Run Code Online (Sandbox Code Playgroud)
Objective-C中可以表示哪些可选类型?当我使用Swift数组或字符串时(以及当我没有使用Optional Int或Double时),为什么不出现错误?
这是我在UITextView中显示属性字符串的代码
NSMutableAttributedString *recipeString =[[NSMutableAttributedString alloc]init];
[recipeString appendAttributedString:string1];
[recipeString appendAttributedString:string2];
[array addObject:recipeString];
Run Code Online (Sandbox Code Playgroud)
这段代码在for循环中.string1并且string2是NSMutableAttributedString.
之后:
self.textView.text = [array objectAtIndex:self.appDelegate.selectedCell];
Run Code Online (Sandbox Code Playgroud)
文本视图是一个IBOutlet.
它崩溃了这个例外:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSConcreteAttributedString _isCString]: unrecognized selector sent to instance 0x8e866f0'
Run Code Online (Sandbox Code Playgroud)
有关如何修复此崩溃的任何想法?