0

User と Task の 2 つのエンティティがあります。それらは 1 対多の関係によるリンカーです。

import Foundation
import CoreData
@objc(User)
class User: NSManagedObject {
    @NSManaged var id: String
    @NSManaged var name: String
    @NSManaged var task: NSSet
}

import Foundation
import CoreData

@objc(Task)
class Task: NSManagedObject {

    @NSManaged var context: String
    @NSManaged var date: String
    @NSManaged var detail: String
    @NSManaged var folder: String
    @NSManaged var id: String
    @NSManaged var responsable: String
    @NSManaged var status: String
    @NSManaged var summary: String
    @NSManaged var user: User

}

xcdatamodel の関係は次のとおりです。

relationship: user, destination: User, Inverse: task  for Task
relationship: task, destination: Task, Inverse: user  for User

Task テーブルでリクエストを実行できる fetchedResultController があります。

func getFetchedResultsController(String) -> NSFetchedResultsController{
    frc = NSFetchedResultsController(fetchRequest: taskFetchRequest(folder), managedObjectContext: context!, sectionNameKeyPath: nil, cacheName: nil)
    return frc
}

func taskFetchRequest(String) -> NSFetchRequest {
    //on choisit sur quel Entity on travaille
    let fetchRequest = NSFetchRequest(entityName: "Task")
    //on Choisit sur quel attribut on place l'Order By. Ici sur Summary en Ascendant
    let predicate = NSPredicate(format: "folder = %@", folder)
    let sortDescriptor = NSSortDescriptor(key: "summary", ascending: true)
    fetchRequest.predicate = predicate
    fetchRequest.sortDescriptors = [sortDescriptor]
    return fetchRequest
}

両方のエンティティで、私は 1 つの共通の属性を持っています。idofUserresponsableofTaskは同じものです。私がする必要があるのは、135482dfsq4g1担当するタスクのために、 User エンティティの対応する名前を出力することです (つまり id 135482dfsq4g1)

私はすでにいくつかのテストを行っていますが、次のように効果的なものは何もありません:

var task : Task?
var user : User?
if(task?.responsable == user?.id){
        OwnerTextField.text = user?.name
    }else{
        println(task?.responsable)
        println(user?.id)
        OwnerTextField.text = ""
    }

task?.responsable は見つかりましたが、user?.id ではないため、比較できません:

Optional("76bbfe695318d471a541bc3333e58eea28acae54")
nil

どんな助けでも大歓迎です。

よろしく。

4

1 に答える 1

1

責任のあるプロパティを削除し、関係ユーザーの名前をResponsibleに変更するだけです。あなたは得るでしょう

NSManaged var responsable: User

そして、 responsible?.name (および、本当に必要な場合は、 responsible?.id )を取得するのは簡単です。

于 2015-07-10T16:07:35.350 に答える