2013-07-23 94 views
0

目前在一個給定的方法對一個類中的一個實例變量我可以創建核心數據和神奇記錄與以下行創建使用核心數據和神奇記錄

AViewController.m管理的自定義變量的實例

List *list = [List MR_createInContext:_managedObjectContext]; 

然後我可以設置列表的屬性,像這樣:

list.name = @"FooBar Name"; 

我的問題:在AViewController.h我可以做如下 -

@interface AViewController : UIViewController { 
    /* Define Local List Var for AViewController class */ 
    List *list; 
} 

然後在.M

viewdidload { 
list = [List MR_createInContext:_managedObjectContext]; 
} 

someCustomMethod { 
    list.name = @"FooBar Name"; 

    [_managedObjectContext MR_save]; 
} 
+0

這不是'本地'變量,它是一個'實例'變量或'ivar'。另外,爲什麼你需要一個變量爲你的'NSManagedObject'子類'List'? – Malloc

回答

1

你的代碼應該可以工作。但是,如果您試圖從輸入元素創建新對象(可能是點擊按鈕),只有通過一次又一次運行應用程序纔會創建新對象。 我的意思是如果您的someCustomMethod被再次調用,同一個對象將被重寫。 (如果這是你想要的,那很好。)

但是,如果你想創建新的對象,你應該在對象內再次初始化它。即你應該使用下面的代碼:

viewdidload { 
list = [List MR_createInContext:_managedObjectContext]; 
} 

someCustomMethod { 
    list.name = @"FooBar Name"; 

    [_managedObjectContext MR_save]; 

    list = [List MR_createInContext:_managedObjectContext]; //add this line 

} 

所以這樣舊的對象將被保存,新對象將在每次someCustomMethod被稱爲創建。

+0

恰到好處。感謝提示 – Apollo

+0

@Auser:np。很高興這是你正在尋找的。 :) – Rakesh

0

這種模式是很常見的,你發佈的代碼應該工作。

我不完全知道MR是如何工作的,但是在Cord Data中,如果要放棄它,必須從上下文中刪除該對象,否則它將與下一次保存一起保存。