Я работаю над приложением группового проекта в Swift для iOS, которое позволяет пользователям сохранять местоположения в рамках тура, используя Firebase. Наш User
объект является пользовательским классом, который, как мы надеемся, будет соответствовать Codable
для использования с CodableFirebase CocoaPod. Однако проблема возникает при попытке согласовать объект Location
с Codable
, поскольку он также должен соответствовать MKAnnotation
... и мы все довольно новы в этом. Вполне возможно, что некоторые решения у меня над головой ... вполне возможно.
Это наш Location
объект:
import Foundation
import MapKit
import CoreLocation
import CodableFirebase
class Location: NSObject, MKAnnotation {
var coordinate: CLLocationCoordinate2D
var locationName: String?
var locationDescription: String?
var locationImage: UIImage?
init(coordinate: CLLocationCoordinate2D, locationName: String, locationDescription: String, locationImage: UIImage) {
self.coordinate = coordinate
self.locationName = locationName
self.locationDescription = locationDescription
self.locationImage = locationImage
}
}
А это наш User
объект модели:
import UIKit
import CloudKit
class User {
//MARK: - Editable Public Profile Info
var firstName: String
var lastName: String
var userStateOfOrigin: States
var userImage: UIImage?
var aboutMe: String
var languages: [Language]
//MARK: - Editable Personal Info (Includes all Public Profile info)
var email: String?
var phoneNumber: String?
//MARK: - Hidden Variables
var userId: String
var userCreatedTours: [Tour]
var savedLocations: [Location]
var savedTours: [Tour]
var bookedTours: [Tour]
var previouslyExperiencedTours: [Tour]
var userRating: [Rating]
init(firstName: String, lastName: String, userStateOfOrigin: States, userImage: UIImage? = nil, aboutMe: String, languages: [Language] = [], email: String?, phoneNumber: String? = "", userId: String, userCreatedTours: [Tour] = [], savedLocations: [Location] = [], savedTours: [Tour] = [], bookedTours: [Tour] = [], previouslyExperiencedTours: [Tour] = [], userRating: [Rating] = []) {
// editable Public info
self.firstName = firstName
self.lastName = lastName
self.userStateOfOrigin = userStateOfOrigin
self.userImage = userImage
self.aboutMe = aboutMe
self.languages = languages
// editable personal info
self.email = email
self.phoneNumber = phoneNumber
// Hidden Variables
self.userId = userId
self.userCreatedTours = userCreatedTours
self.savedLocations = savedLocations
self.savedTours = savedTours
self.bookedTours = bookedTours
self.previouslyExperiencedTours = previouslyExperiencedTours
self.userRating = userRating
}
}
У нас есть несколько других пользовательских объектов, но я думаю, что как только эта проблема будет решена, мы сможем легко согласовать их с Codable
. В конечном счете, было бы здорово иметь возможность сделать так, чтобы они оба соответствовали Codable
для удобного использования с Firebase. Однако, если это невозможно, или самый разумный путь, я очень открыт для предложений. Я действительно ценю это.