SwiftUIWPArticleLoader (SwiftUI WordPress 文章加载器)

欢迎使用 WPArticleLoader!

使用 WPArticleLoader,您可以轻松地从您的 WordPress 网站加载文章。

如何使用?

使用方法非常简单!您只需设置您的网站地址并为 Publisher 构建一个接收器。

let handler = WPArticleLoader(websiteAdress: URL(staticString: "https://ml-projects.de"))
handler.fetchArticles()
    .receive(on: DispatchQueue.main)
    .sink { response in
        switch response {
        case let .failure(error):
            print(error)
        case .finished:
            print("Articles loaded")
        }
    } receiveValue: { response in
        self.articles = response
    }
    .store(in: &cancellables)

`Article` 类包含最重要的数据并对其进行解析。如果您想自行解析数据,可以使用 ArticleLoadingService 并接收 `ContentfulArticle`。`ContentfulArticle` 中包含来自 REST APIJSON 完整数据。您可以像这样使用 ArticleLoadingService

let articleURL = URL(staticString: "https://ml-projects.de/wp-json/wp/v2/posts")
var components = URLComponents(string: articleURL.absoluteString)!
// this is to get the embeded Data too (The Embeded Data is used by the normal Loader too)
components.queryItems = [
    URLQueryItem(name: "_embed", value: nil)
]
// Create a URLRequest
let request = URLRequest(url: components.url!)
// Create the handler
let handler = ArticleLoadingService()
handler.fetchArticles(urlRequest: request)
    .receive(on: DispatchQueue.main)
    .sink { response in
        switch response {
        case let .failure(error):
            print(error)
        case .finished:
            print("Contentful Articles loaded")
        }
    } receiveValue: { response in
        self.contentfulArticles = response
    }
    .store(in: &cancellables)

ImageLoader (图像加载器)

`ImageLoader` 是另一个简化功能,它可以为您加载图像,因此您无需自己加载,您可以将其与 `AsyncImage` 结合使用。

// Example for the featuredImage
AsyncImage(imageLoader: featuredImageLoader) {
    // your Placeholder
}

但是您也可以自行接收图像或使用 URL。

// Image
if let featuredImage = featuredImageLoader.image {
    Image(uiImage: featuredImage)
}
// URL
featuredImageLoader.url

`featuredImageLoader` 是可选的,因为并非每篇文章都有特色图像。

将 `ImageLoader` 用于您的 URL。

如果您想将 `ImageLoader` 用于您自己的 URL,例如内容中的 URL,您可以轻松地初始化它并将其与 `AsyncImage` 一起使用。

// Example for the featuredImage
AsyncImage(imageLoader: ImageLoader(url: URL(staticString: "youradress.com"))) {
    // your Placeholder
}

开发者:Torben Köhler