0

IBM Watson APIs - Alchemy Data news객관적인 C에서 값을 반환하는 swift 함수를 사용하는 방법?

문제는 신속한 객관적인 C 브리징을 사용하고 있으며 그 사이에 값을 반환하는 함수가 붙어 있습니다. 목표 C 코드에서이 값을 어떻게 사용합니까?

은 여기 내 신속 클래스

내가 디스플레이로 alchemyDataNews.getNews 인쇄 값을 갖고 싶어
@objc class alchemyNews : NSObject { 

func getNewsList() -> NewsResponse { 

    let apiKey = "api-key" 
    let alchemyDataNews = AlchemyDataNews(apiKey: apiKey) 

    let start = "now-1d" // yesterday 
    let end = "now" // today 
    let query = [ 
     "q.enriched.url.title": "O[IBM^Apple]", 
     "return": "enriched.url.title,enriched.url.entities.entity.text,enriched.url.entities.entity.type" 
    ] 
    let failure = { (error: NSError) in print(error) } 

    alchemyDataNews.getNews(start, end: end, query: query, failure: failure) { news in 
     print(news) 

    } 

    let response : NewsResponse = alchemyDataNews.getNews(start, end: end) { news in 
     return news 
    } 

    return response 
} 
} 

입니다. 그래서이 방식으로 Objective C 클래스에서이 함수를 호출하려고합니다.

@property (strong, nonatomic) AlchemyDataNews *getnews; 

-(void)loadNews 
{ 
    self.getnews = [[AlchemyDataNews alloc]init]; 
    [self.getnews getNewsList]; 

} 

하지만 지금해야 할 일은 무엇입니까? 이것은 함수를 호출하고 배열에 넣고 tableview에 표시 할 수 있도록 응답을 제공하지 않습니다.

+0

저는 Swift 구현에 대해 가장 확신합니다 ... 비동기 워크 플로를 통해 수집하는 동기식 데이터를 사용하려는 것 같습니다. 그래서 _return_ 값 대신 _completion closure_를 사용하기 위해 원래 함수를 완전히 다시 작성해야한다고 생각합니다. – holex

답변

2

getNewsListNewsResponse의 인스턴스를 반환한다고 생각합니다. 변수에 저장 한 다음 사용해야합니다.

self.getnews = [[AlchemyDataNews alloc]init]; 
NewsResponse *newResponse = [self.getnews getNewsList]; 

// now you can use 'newResponse' 
// ... 

희망을 얻었습니다.

+0

빠른 클래스는 괜찮습니까? 실수가 있습니까? –

+0

네, 그게되어야합니다 –

1

NewsResponse 유형 (기본 속성은 NewsResult)은 struct입니다. 안타깝게도 Swift의 struct 유형은 Objective-C에 연결하지 않습니다. Swift-to-Objective-C 브리징을 사용하려면 NewsResponse 유형을 처리하기 위해 Swift 코드를 작성해야합니다.

예를 들어 관심있는 각 NewsResponse의 정보를 선택하고 Swift Dictionary (Objective-C NSDictionary에 연결됨)에 해당 값을 저장할 수 있습니다. 또는 테이블 뷰를 Swift로 표시하고 Swift 코드를 작성하여이를 채울 수 있습니다.

희망 하시겠습니까?

+0

정말 고마워요 :) –