Как можно использовать XCTAssertNil с дополнительными структурами?

Обновление 23.03.2016 Я только что проверил мой оригинальный пример кода ниже, и все это прекрасно компилируется в XCode 7.3. Похоже, что XCTAssertNil был обновлен по пути, чтобы принять выражение типа() throws -> Any? Поэтому этот вопрос и ответ могут больше не понадобиться (за исключением некоторого времени с более старыми версиями компилятора.)

Я пишу свои первые модульные тесты в XCode с XCTest. Я не уверен, как можно воспользоваться XCTAssertNil, поскольку он, похоже, компилируется только при использовании определенных типов. Похоже, он будет работать с опциями, сделанными из классов и встроенных примитивов, но не структур. Как можно использовать этот метод?

Для структур компилятор выдает следующую ошибку (предполагая, что SimpleStruct - это имя вашего типа):

'SimpleStruct' is not identical to 'AnyObject'

Вот простой тестовый класс, чтобы проиллюстрировать некоторые типы, которые хорошо компилируются, а другие - нет.

import Cocoa
import XCTest

struct SimpleStruct {
}

class SimpleClass {
}

class Tests: XCTestCase {

    func testl() {
        var simpleStruct:SimpleStruct? = nil;
        var simpleClass:SimpleClass? = nil;
        var i:Int? = nil;
        var s:String? = nil;
        var tuple:(Int,String)? = nil;

        XCTAssertNil(simpleStruct); // compile error
        XCTAssertNil(simpleClass); // OK
        XCTAssertNil(i); // OK
        XCTAssertNil(s); // OK
        XCTAssertNil(tuple); // compile error
    }

}

Ответы на вопрос(1)

Ваш ответ на вопрос