Skip to content

Commit 2005e68

Browse files
committed
Add type hint to fetch method
1 parent 1995f4f commit 2005e68

3 files changed

Lines changed: 6 additions & 7 deletions

File tree

Examples/Relationships/RelationshipsExample/RelationshipsExample/FileCabinetsView.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,7 @@ final class FileCabinetsViewModel {
8787

8888
@Sendable
8989
func loadFileCabinets() async {
90-
let result: Result<[FileCabinet], CoreDataError> = await repository.fetch(Self.fetchRequest)
91-
switch result {
90+
switch await repository.fetch(Self.fetchRequest, as: FileCabinet.self) {
9291
case let .success(success):
9392
state.fileCabinets = success
9493
case let .failure(error):

Sources/CoreDataRepository/CoreDataRepository+Fetch.swift

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,10 @@ import Foundation
1111

1212
extension CoreDataRepository {
1313
/// Fetch items from the store with a ``NSFetchRequest``.
14-
public func fetch<Model: UnmanagedModel>(_ request: NSFetchRequest<Model.ManagedModel>) async
15-
-> Result<[Model], CoreDataError>
16-
{
14+
public func fetch<Model: UnmanagedModel>(
15+
_ request: NSFetchRequest<Model.ManagedModel>,
16+
as _: Model.Type
17+
) async -> Result<[Model], CoreDataError> {
1718
await context.performInChild { fetchContext in
1819
try fetchContext.fetch(request).map(Model.init(managed:))
1920
}

Tests/CoreDataRepositoryTests/FetchRepositoryTests.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,7 @@ final class FetchRepositoryTests: CoreDataXCTestCase {
4141
}
4242

4343
func testFetchSuccess() async throws {
44-
let result: Result<[Movie], CoreDataError> = try await repository().fetch(fetchRequest)
45-
switch result {
44+
switch try await repository().fetch(fetchRequest, as: Movie.self) {
4645
case let .success(movies):
4746
XCTAssertEqual(movies.count, 5, "Result items count should match expectation")
4847
XCTAssertEqual(movies, expectedMovies, "Result items should match expectations")

0 commit comments

Comments
 (0)