2015-07-11 94 views
2

我有一個類,如:實例化一個NSManagedObject,但不保存

@objc(User) 
class User: NSManagedObject { 

    @NSManaged var id: String 

    //MARK: - Initialize 
    convenience init(id: String, context: NSManagedObjectContext?) { 

     // Create the NSEntityDescription 
     let entity = NSEntityDescription.entityForName("User", inManagedObjectContext: context!) 


     // Super init the top init 
     self.init(entity: entity!, insertIntoManagedObjectContext: context) 


     // Init class variables 
     self.id = id 

    } 
} 

我在一個視圖控制器創建一個新用戶:

managedObjectContext = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext! 

var aUser = User(id: "500T", context: managedObjectContext) 

我還有一個「羣體」,其中集團有許多用戶。爲了節省用戶我做了類似於

aGroup!.users = NSSet(array: users!) 
!managedObjectContext.save 

我不想保存所有用戶。我怎樣才能實例化一個用戶而不保存它?

+0

只是不保存。在用戶完成後重置moc。或者創建一個NSManagedObject子類。我相信你可以在moc之外使用它們。 –

+0

@Renk我剛剛更新了我的問題,因爲實際上我不知道重置的位置,因爲我將所有用戶都存儲在一個數組中,然後將此NSSet保存到使用關係 – Ludovic

+0

的組中。是否有某些用戶是不同的?然後你可以迭代用戶數組並保存反向關係。 'aUser.group = aGroup'但要真正解決您的問題,您應該創建另一個具有與用戶相同的值類的類,並僅爲需要保存的用戶創建NSManagedObjects –

回答

4

我找到了我的答案並添加了一個needSave布爾值給用戶init。也許這不是最好的答案,但它的工作。

+0

如果上下文爲零,以下代碼將如何工作? let entity = NSEntityDescription.entityForName(「User」,inManagedObjectContext:context!) – Anand

+0

爲我工作,謝謝 – Teiki