2015-07-10 88 views
0

我有兩個實體,用戶和任務。他們是由一個一對多的關係連接,這是他們的樣子Swift一對多關係

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 

我有我的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 
} 

在這兩個實體,我有一個共同的屬性,的UseridTaskresponsable是同樣的事情,我需要做的是,對於具有135482dfsq4g1負責,打印的用戶實體對應的名稱(以便任務該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 = "" 
    } 

任務.responsable被發現,但不是用戶.ID,所以我不能比較:??

Optional("76bbfe695318d471a541bc3333e58eea28acae54") 
nil 

任何幫助,將不勝感激。

問候。

+0

爲什麼你有一個負責任的財產和用戶關係?一個任務可以有約翰作爲用戶端安娜作爲負責任? –

+0

任務有一個負責人(一個用戶),但用戶可以有幾個任務。 用戶是一個表,其中包含用戶的名稱和ID。任務只有用戶標識。我需要打印用戶名而不是id,這就是爲什麼我要這樣做的關係,這是錯誤的嗎? – fselva

回答

1

只需卸下負責財產和重新命名的關係用戶負責。你會得到

NSManaged var responsable: User 

並獲得負責?.NAME(和負責?.ID如果你真的需要它)將是直接的。