2011-11-08 51 views
1

背景:我正在使用Xcode 4.2中包含的數據建模工具來設置我的Core Data實體。我編寫了一些將NSManagedObject轉換爲字典的代碼,以便將數據作爲JSON上傳到Web服務。我想將某些實體屬性標記爲不應序列化爲JSON的實體屬性。我希望通過向每個我不希望序列化的屬性的「用戶信息」添加一個鍵和值來實現此目的。這樣做使用Xcode 4的數據建模工具應允許下面的代碼片段工作(這是NSManagedObject類別的一部分,所以這就是「自我」是):Xcode4數據實體建模困境 - userInfo爲零屬性

NSDictionary *attributesByName = [[self entity] attributesByName]; 
NSMutableDictionary *valuesDictionary = [NSMutableDictionary dictionaryWithCapacity:[attributesByName count]]; 

[valuesDictionary setObject:[[self entity] name] forKey:@"ManagedObjectName"]; 

for (NSString *attributeName in [attributesByName allKeys]) 
{ 
    NSAttributeDescription *description = [attributesByName objectForKey:attributeName]; 
    id dontSerializeValue = [[description userInfo] valueForKey:@"dontSerialize"]; 
    if (!dontSerializeValue) 
    { 
     id attributeValue = [self valueForKey:attributeName]; 
     [valuesDictionary setObject:((attributeValue) ? attributeValue : [NSNull null]) forKey:attributeName]; 
    } 
} 

所以,我的問題是這樣的:[description userInfo]的結果(如上面的上下文中所用)始終爲零,顯然,沒有鍵/值對。我有幾個版本的模型,但是我確定我正在編輯「當前」版本(並且在向實體屬性添加密鑰和值之後保存)。另一個有趣的事情是,如果我退出Xcode(顯然先保存)然後再次打開它,那麼我添加到任何屬性的用戶信息中的東西就消失了。有沒有人對發生了什麼有什麼想法?

回答

2

通過純粹的運氣(和我切換我的代碼使用userInfo從我的實體,而不是實體上的個別屬性後),我發現問題是什麼。

Xcode 4在選擇xcdatamodel文件時,在File Inspector的「Core Data Model」下有一個「Tools Version Minimum」屬性。我的數據模型的這個屬性的值是「Xcode 3.2」。一時興起,我將此值更改爲「Xcode 4.2」。突然間,我的NSAttributeDescription對象有userInfo返回我期望的!

我希望有使用的Xcode 4。當我在做我的搜索,大部分的蘋果文檔的沒有被更新,以反映在Xcode 4

介紹無論如何變化,希望這數據建模更多的文檔職位可以拯救一個人我經歷的頭痛。