2014-08-28 2 views
1

Swift를 사용하여 NSXMLNode를 만들려고합니다. 이것은 the class reference (와 엑스 코드의 자동 완성)을 기반으로 매우 간단해야처럼 보인다 :Swift : NSXMLNode 만들기

var anAttribute: NSXMLNode = NSXMLNode.attributeWithName("name", stringValue: "string") 

하지만 에러가납니다. "매개 변수에 대한 인수 전화에서 'URI'을 누락"

나는 다음 시도 :

똑같이 재미있는 오류가 발생
var anAttribute: NSXMLNode = NSXMLNode.attributeWithName("name", URI: "uri", stringValue: "string") 

". 호출에 추가 인수 'URI'을"

아무도 나에게 무슨 일이 일어나는지 말해 줄 수 있습니까?

답변

3

attributeWithName()AnyObject?이고, 스위프트 매핑은 id입니다. 당신은 가능한 오류를 확인하려면,

let anAttribute = NSXMLNode.attributeWithName("name", stringValue: "string") as NSXMLNode 

또는 : 따라서 당신이 예상되는 형태로 반환 값을 캐스팅해야

if let anAttribute = NSXMLNode.attributeWithName("name", stringValue: "string") as? NSXMLNode { 
    // success 
} else { 
    // failed 
} 

근본적인 이유는 목적이다 -C 기능

+ (id)attributeWithName:(NSString *)name stringValue:(NSString *)value 

id을 반환합니다. 이 (클래스/팩토리 메소드를 선언 할 수있는 "현대"방법입니다)

+ (instancetype)attributeWithName:(NSString *)name stringValue:(NSString *)value 

로 선언 한 다음이 가 명시 적 캐스트가 필요하고

class func attributeWithName(_ name: String!, 
      stringValue value: String!) -> NSXMLNode! 

로 스위프트에 매핑 될 것이다. 버그 보고서를 Apple에 제출할 수 있습니다.

관련 문제