This library provides useful functionality for food and nutrition apps in SwiftUI, including:
- Integration with the OpenFoodFacts database
- Barcode scanning
- Nutrition label scanning
- Nutrition label rendering
To lookup a food item from the OpenFoodFacts database, you can use the OpenFoodFactsAPI
class.
import NutritionKit
let api = OpenFoodFactsAPI.shared
let foodItem = try await api.find("59032823")
print(foodItem.productName) // Prints "Nutella - 630g"
To configure the fields you are interested in, you can use the configure
function:
api.configure(productFields: [.productName, .servingSize])
NutritionKit provides a SwiftUI view for scanning generic barcodes, BarcodeScannerView
. To use this view, you must set the value Privacy - Camera Usage Description
in your app's Info.plist
.
By itself BarcodeScannerView
only shows the live camera feed with no overlay or other info. You can provide more information yourself by embedding it in a ZStack
or in another view.
import NutritionKit
struct ContentView: View {
@State var barcodeData: Barcode? = nil
var body: some View {
BarcodeScannerView(barcodeData: $barcodeData)
.onChange(of: barcodeData) { data in
// A barcode was detected in the camera feed
}
}
}
NutritionKit can detect and parse nutrition labels. Currently, only English and German labels are supported. Nutrition labels are scanned similarly to barcodes with the NutritionLabelScannerView
.
import NutritionKit
struct ContentView: View {
@State var nutritionLabel: NutritionLabel? = nil
var body: some View {
NutritionLabelScannerView(nutritionLabel: $nutritionLabel)
.onChange(of: nutritionLabel) { data in
// A nutrition label was detected in the camera feed
}
}
}
Currently, the following information can be detected:
- Serving size
- Calories, calories from fat
- Fat, saturated fat, unsaturated fat, trans fat, omega-3 fatty acids
- Carbohyrates, sugar, added sugar, starch, sugar alcohols, dietary fiber
- Protein
- Salt, Sodium, Cholesterol
- Vitamins A, B1, B2, B6, B9, B12, C, DE, E, K
- Caffeine, Taurine, Alcohol
- Magnesium, Calcium, Zinc, Potassium, Iron, Fluoride, Copper, Chloride, Phosphorus, Iodine, Chromium