0
나는 두세 번 실행 한 것에 당혹 스럽다. 가끔 다음과 같은'Foo!'유형의 값을 변환 할 수 없습니다. 예상 인수 유형 'Foo!'
Cannot convert value of type 'Foo!' to expected argument type 'Foo!
'
내가 SO 검색 한과 유사한 오류가 발생할 수 있지만, 정말 왜 푸 설명 아무것도 발견하지 않았습니다! Foo와 같지 않습니다. 소용없이, 예를
import XCTest
@testable import WooHoo
class FooViewModelTests: XCTestCase {
override func setUp() {
super.setUp()
}
override func tearDown() {
super.tearDown()
}
func testGetBar() {
var foo = Foo()
let vm = FooViewModel()
// The following line generates the error
vm.setFooModel(foo)
XCTAssertEqual("Tell us your Foo for the Bar program.", vm.getBlah())
}
}
I가 vm.setFooModel(foo)
대한 다수의 변동을 시도한 다음은
// FooViewModel.swift
class FooViewModel: BaseViewModel {
fileprivate var foo: Foo!
fileprivate var bar: Bar = Bar()
init!(model: Foo!) {
super.init()
foo = model
}
override init() {
super.init()
}
func setFooModel(_ model: Foo!) {
self.foo = model
}
func getFooModel() -> Foo! {
return self.foo
}
func getBar() -> Bar {
return bar
}
func getBlah() -> String {
return "Blah"
}
}
오류 발생 유닛 테스트이다 : 여기
는 예제
vm.setFooModel(foo!)
또는 foo를
var foo: Foo! = Foo()
으로 선언하십시오.
편집 : 위의 코드는 내가 실행중인 문제를 설명하기위한 것으로 작동 코드가 아닙니다.
'Foo'유형이 선언 된 곳은 어디입니까? 서로 다른 범위 내에서 선언 된 하나 이상의'Foo'가있을 수 있습니까? –
변수'foo'를 선언 할 때'Foo!'만 사용해야하고, 다른 곳에서는'Foo' 만 사용해야한다고 생각합니다. – 3stud1ant3
'setFooModel'과'getFooModel' 메소드의 핵심은 무엇입니까? 'foo' 속성을 드러내지 않는 이유는 무엇입니까? 'getBar' 메소드와 같습니다. 왜 단순히'bar' 속성을 공개 읽기 권한으로 만듭니 까? – rmaddy