2012-04-07 27 views
1

當我第一次啓動我的iOS項目時,我可以在覈心數據中使用大寫字母來啓動我的屬性名稱(FirstName,LastName等)。這對我來說是非常有益的,因爲我使用Web服務將數據提供給CoreData,插入到我的本地CoraData數據庫中的插入和創建對象大大簡化,並且如果所有屬性名稱完全匹配,速度會非常快。到目前爲止,這並沒有成爲問題。目前在xCode 4.3.1中,我無法避開命名約定的限制,它使我非常頭痛,因爲我的遠程數據庫使用大寫字母來表示列名,而這些列名又與我的本地CoreData屬性不匹配。CoreData'名稱必須以小寫字母開頭' - 我可以解決這個問題嗎?

有沒有辦法解決這個在xCode?

回答

1

簡單的答案是否定的。如果你有以上數據出自你的遠程數據庫的方式任何控制,你可能只是這樣做:

Select FirstName as firstName, LastName as lastName ... 

如果是太麻煩,那麼你將需要或者需要將這些映射到您的項目中,或者不要使用Xcode 4.3或更高版本。

+0

瘸子,他們在那裏加入不錯的改變 - 似乎有一個叫請將isDeleted屬性是現在的一個問題在我的模型,以及 - 不開心:( – Slee 2012-04-07 15:29:12

+0

對不起,可能不久之後,班級名稱被迫以大寫開頭。 – 2012-04-07 15:39:49

3

功能的第一個字符轉換爲小寫:

-(NSString *)refactorAttributeName:(NSString*)name { 
    NSString *first = [[name substringToIndex:1] lowercaseString]; 
    return [name stringByReplacingCharactersInRange:NSMakeRange(0, 1) 
             withString:first];    
} 
0

我想你可以嘗試在4.2使用大信打開同一個項目,然後在4.3重啓,這將尊重舊約定

1

您可以隨時進入模型包並手動編輯內容文件。這並不意味着這個新標準不會在以後出現。

0

我有類似的問題 - 我想使用以小寫字母開頭的實體名稱,xcode要求使用以大寫字母開頭的名稱。可用的選項 編輯器菜單

  • 使用Xcode的重構更改創建子類的名稱
  • 重構改變 -

    1. 爲實體創建NSManagedObject子:我通過以下方式解決這個問題也是數據模型中實體的名稱。我相信相同的方法可以用來改變屬性的名稱。我用xcode 4.6.1。

    0

    當我的Web服務JSON響應映射到我的核心數據模型時,我遇到了同樣的問題。除了更改核心數據模型我解決它通過改變我的映射代碼如下:

    for (NSString *key in json) { 
        NSString *keyWithFirstCharLowered = [key stringByReplacingCharactersInRange:NSMakeRange(0, 1) withString:[[key substringToIndex:1] lowercaseString]]; 
    
        if ([modelClass respondsToSelector:NSSelectorFromString(keyWithFirstCharLowered)]) { 
         [modelClass setValue:[json valueForKey:key] forKey:keyWithFirstCharLowered]; 
        } 
    } 
    
    相關問題