2016-11-06 6 views
0

私はブランドに属するすべてのモデルを取得しようとしていますが、外部キーを取得しようとしているときに、外部キーを内部に持つ何らかの種類のアドレス構造を持つNSSETタイプを取得しています私のコードはここにあります:swiftで関連テーブルを取得する3

class func insertNew (brandDescription: String, inManagedObjectContext context: NSManagedObjectContext) -> Car_Brand? { 
     let request: NSFetchRequest<Car_Brand> = Car_Brand.fetchRequest() 
     request.predicate = NSPredicate (format: "brand = %@", brandDescription) 
     if let brand = (try? context.fetch(request))?.first { 
      return brand 
     } else if let brand = NSEntityDescription.insertNewObject(forEntityName: "Car_Brand", into: context) as? Car_Brand { 
      brand.brand = brandDescription 
      return brand 
     } 
     return nil 
    } 
class func fetchModel (brandDescription: String, inManagedObjectContext context: NSManagedObjectContext) -> [String]? { 
    let Brand = Car_Brand.insertNew(brandDescription: brandDescription, inManagedObjectContext: context) 
    let request: NSFetchRequest<Model> = Model.fetchRequest() 
    request.predicate = NSPredicate(format: "id_model = %ld", (Brand?.id_model)!) 
    request.propertiesToFetch = ["model"] 
    request.sortDescriptors = [NSSortDescriptor(key: "model", ascending: true)] 
    if let preModelList = try? context.fetch(request) as [Model] { 
     var modelList: [String] = [] 
     for preModelList in preModelList { 
      modelList.append(preModelList.model!) 
     } 
     return modelList 
    } else { 
     return nil 
    } 
} 

関連するテーブルをフェッチする方法を教えてください。

答えて

0

fetchModelは、電話するたびにCar_Brandの新しいインスタンスを挿入します。その新たに挿入されたインスタンスに既存のモデルが存在する可能性は低いです。

P.S.彼らはコアデータの "テーブル"ではありません。私たちは実体と関係を持っています。しかし、Core Dataをデータベースとして考えると、多くの論理問題が発生する可能性があります。

+0

感謝の、唯一存在しない場合は挿入し、私はこのような何かに述語を変更しようとしていた、request.predicate = NSPredicate(形式: "Car_Brand.id_model =%@"、brandDescription)でも、どちらもうまくいきません。このようにフィルタリングするための良い例がどこにあるか知っていますか –

0

ソリューション:

class func fetchModel (brandDescription: String, inManagedObjectContext context: NSManagedObjectContext) -> [String]? { 
     let request: NSFetchRequest<Model> = Model.fetchRequest() 
     request.predicate = NSPredicate(format: "id_model.brand = %@",brandDescription) 
     request.propertiesToFetch = ["model"] 
     request.sortDescriptors = [NSSortDescriptor(key: "model", ascending: true)] 
     if let preModelList = try? context.fetch(request) as [Model] { 
      var modelList: [String] = [] 
      for preModelList in preModelList { 
       modelList.append(preModelList.model!) 
      } 
      return modelList 
     } else { 
      return nil 
     } 
    } 

参照: https://developer.apple.com/library/prerelease/content/documentation/Cocoa/Conceptual/Predicates/Articles/pUsing.html

関連する問題