0
私はクラスを1つ持っていますPlace
&他のクラスはAddress
です。私は1つの関係を作成しているので、今は1つの場所だけが1つのアドレスを持っているので、私は場所を保存しようとしているとき私はそれを行うことができません。私はこの機能について書きました。関係クラスを使ってデータをcoredataに保存しますか?
if #available(iOS 10, *) {
placeInfo = NSEntityDescription.insertNewObject(forEntityName: "PlaceInfo", into: appDelegate.persistentContainer.viewContext) as? PlaceInfo
} else {
placeInfo = NSEntityDescription.insertNewObject(forEntityName: "PlaceInfo", into: appDelegate.managedObjectContext!) as? PlaceInfo
}
var cordinates:[String] = []
placeInfo?.title = Place.shared.title ?? ""
placeInfo?.desc = Place.shared.desc ?? ""
placeInfo?.id = "Place_" + String(Utility.shared.currentTimeStamp())
let spotLocation = Place.shared.address
if let lat = spotLocation?.lat, let long = spotLocation?.long {
cordinates = [lat.toString(),long.toString()]
}
let address = NSEntityDescription.insertNewObject(forEntityName: "PlaceAddress", into: appDelegate.managedObjectContext!) as? PlaceAddress
address?.street = "Street"
address?.landmark = "LANDMARK"
address?.city = "MYCITY"
address?.state = "SATTE"
address?.state = "INDIA"
address?.pincode = "1256325"
placeInfo?.isuploaded = true
if let spotid = placeInfo?.id {
// saveMediaToDB(id: spotid)
}
placeInfo?.address_rel = address
Placeinfoクラス
import Foundation
import CoreData
extension PlaceInfo {
@nonobjc public class func fetchRequest() -> NSFetchRequest<PlaceInfo> {
return NSFetchRequest<PlaceInfo>(entityName: "PlaceInfo")
}
@NSManaged public var desc: String?
@NSManaged public var hasmedia: Bool
@NSManaged public var id: String?
@NSManaged public var isuploaded: Bool
@NSManaged public var title: String?
@NSManaged public var address_rel: PlaceAddress?
@NSManaged public var files_rel: NSSet?
}
// MARK: Generated accessors for files_rel
extension PlaceInfo {
@objc(addFiles_relObject:)
@NSManaged public func addToFiles_rel(_ value: FilesInfo)
@objc(removeFiles_relObject:)
@NSManaged public func removeFromFiles_rel(_ value: FilesInfo)
@objc(addFiles_rel:)
@NSManaged public func addToFiles_rel(_ values: NSSet)
@objc(removeFiles_rel:)
@NSManaged public func removeFromFiles_rel(_ values: NSSet)
}
なぜオプションダウンキャストは 'ですか? PlaceInfo'と 'as? PlaceAddress'?クラスはコンパイル時には確実に存在します。強制ダウンキャストは失敗してはいけません。それ以外の場合は、開発者/設計上のエラーが表示されます。それで、あなたはすべての醜い疑問符を取り除きます。また、 'PlaceAddress'イニシャライザについても条件コンパイル' if #available(iOS 10、*) 'を実行する必要があります。 – vadian