2017-06-21 21 views
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) 

} 
+0

なぜオプションダウンキャストは 'ですか? PlaceInfo'と 'as? PlaceAddress'?クラスはコンパイル時には確実に存在します。強制ダウンキャストは失敗してはいけません。それ以外の場合は、開発者/設計上のエラーが表示されます。それで、あなたはすべての醜い疑問符を取り除きます。また、 'PlaceAddress'イニシャライザについても条件コンパイル' if #available(iOS 10、*) 'を実行する必要があります。 – vadian

答えて

0

あなたは、コードの以下の行を追加しましたか?

do { 
    try managedObjectContext.save() 
} catch { 
    fatalError("Failure to save context: \(error)") 
} 
関連する問題