질문이 있습니다. 루비에서 오는 것은 내가 다음을 할 수있는 구문에 익숙하다. 나에게 가능한 모든 뉴스의 목록을 줄 것이다Swift 인스턴스와 클래스 메서드 및 클래스 상속
client = NewsAPI::Client.new(
url: 'https://www.newshost.com/api/',
http_token: '1234567890',
)
newsEntry = client.news.new(
title: 'Some title',
text: 'Some text',
);
newsEntry.save
또는
news = client.news.all
.
나는 Swift 클래스와 인스턴스 메소드를 사용하여 비슷한 것을 만들려고했다. 어떤 인스턴스 메서드에 대한 일하지만, 구현하는 방법을 모르거나 클래스 기능에 액세스 할 수 있습니다. "목록"또는 "검색"과 같습니다. XCode 놀이터에서 작동하는 작은 예제를 만들었습니다.
기본적으로 나는 클라이언트 클래스를 가지고 있는데,이 클래스는 나에게 여러 "객체"를 제공해야합니다. 이 경우에는 뉴스 "개체"입니다. 이 객체는 위의 루비 코드와 비슷한 것을 제공해야합니다. 아래 코드를 참조하십시오. 내 질문에
: I) 난 그저 내 기본 클래스에 이러한 기능을 추가하고 내 하위 클래스에서이를 오버라이드 (override) 할 수있다. 이것은 저에게 동일한 행동을 줄 것입니다. 클래스 및 인스턴스 메서드를 혼합하더라도. (나는 짐작한다) 이것이 "모범 사례/설계"의 관점에서 좋을까?
2) "신속한 방법"을 원하는대로 달성하기위한 더 깨끗하고 좋은 방법이 있습니까?
많은 감사 요하네스
class Client{
let token: String
public init(token: String) {
self.token = token
}
public var newsObject: News {
return News()
}
}
class Ressource {
class func list() {
print("this is a news list")
}
class func search() {
print("this is a news search result")
}
func start() {
print("Hello")
}
}
class News: Ressource{
override func start() {
print("Hello from Sub Class")
}
}
let news = Client(token: "123456").newsObject
news.start()
좋아, 이해했다. 엔드 포인트에 대한 연결을 처리하는 클라이언트에 대한 참조가 필요합니다. 그래서 클래스 함수에 인수로 전달해야 할 것 같아요? –
또는 함수를 인스턴스 함수로 만듭니다. 더 자세한 내용이 없으면 나는 더 나은 접근법을 확실히 말할 수 없다. –