구현 내용

구현 사항

추가적으로

문제 해결

1. 다량의 사진을 추가했을때 화면이 멈추는 문제

100장 이상의 사진을 한번에 추가할때 화면이 멈춤

1-1. 문제 정의

func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) {
    dismiss(animated: true)
    
    for result in results {
        guard let assetIdentifier = result.assetIdentifier else { continue }
        
        let assetResults = PHAsset.fetchAssets(withLocalIdentifiers: [assetIdentifier], options: nil)
        guard let asset = assetResults.firstObject else { continue }
        
        let photoAsset = coreDataManager.createPhotoAsset(
            identifier: asset.localIdentifier,
            creationDate: Date(),
            mediaType: asset.mediaType
        )
        
        var snapshot = dataSource.snapshot()
        snapshot.appendItems([.init(model: photoAsset)], toSection: .main)
        dataSource.apply(snapshot, animatingDifferences: true)
    }
}

func createPhotoAsset(identifier: String, creationDate: Date, mediaType: PHAssetMediaType) -> PhotoAsset {
    let photoAsset = PhotoAsset(context: context)
    photoAsset.identifier = identifier
    photoAsset.creationDate = creationDate
    photoAsset.mediaType = Int16(mediaType.rawValue)
    saveContext()
    return photoAsset
}

func fetchPhotoAssets() -> [PhotoAsset] {
    let fetchRequest: NSFetchRequest<PhotoAsset> = PhotoAsset.fetchRequest()
    fetchRequest.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: true)]
    do {
        return try context.fetch(fetchRequest)
    } catch {
        print("Error fetching PhotoAssets: \\(error)")
        return []
    }
}