몇 가지 구조체가 있습니다. Foo
, Bar
, Baz
및 아래 함수를 사용하여 plist를 [String : Foo] 사전으로 읽습니다. 그리고 [String : Bar] 사전 등을 만드는 방법이 있습니다.이 모든 것이 잘 작동합니다.Swift의 일반 사전
func loadFoo() -> [String : Foo]? {
guard
let path = Bundle.main.path(forResource: "foo", ofType: "plist"),
let plistDict = NSDictionary(contentsOfFile: path) as? [String : AnyObject]
else { return nil }
var dict = [String : Foo]()
for (key, f) in plistDict {
if let info = f as? [String : AnyObject] {
let foo = Foo(symbol: key, info: info)
dict[key] = foo
}
}
return dict
}
물론 이것은 "generics 사용"이라고 비명을 지르기는하지만 아직 작동시키지 못했습니다. 예를 들어 Foo
을 <A>
또는 A
으로 바꿨지 만 컴파일러 오류가 발생합니다 (지금 당장은 Mac에서 멀리 떨어져 있으므로 여기에서 오류를 재현 할 수 없습니다).
이 문제를 해결하는 방법에 대한 제안이 있으십니까?
'pList' 변수 란 무엇입니까? – Avt
Xcode의 속성 목록. 아, 그리고 오타가있어서 고쳐 버렸어. – Koen