1

当我第一次开始我的 iOS 项目时,我可以在核心数据中使用大写字母来开始我的属性名称(名字、姓氏等...)。这对我非常有利,因为我使用 Web 服务和 plist 将数据输入 CoreData,并且如果所有属性名称完全匹配,插入到本地 CoraData DB 中的对象的创建将大大简化并且超级快速。到目前为止,这还不是问题。目前在 xCode 4.3.1 中,我无法绕过命名约定限制,这让我非常头疼,因为我的远程数据库使用大写字母作为列名,而这又与我的本地 CoreData 属性不匹配。

无论如何在xCode中解决这个问题?

4

6 回答 6

3

将第一个字符转换为小写的函数:

-(NSString *)refactorAttributeName:(NSString*)name {
   NSString *first = [[name substringToIndex:1] lowercaseString];
   return [name stringByReplacingCharactersInRange:NSMakeRange(0, 1) 
                                        withString:first];            
}
于 2012-04-07T17:28:33.933 回答
1

简单的答案是否定的。如果您可以控制数据从远程数据库传出的方式,您可以执行以下操作:

Select FirstName as firstName, LastName as lastName ...

如果这太麻烦了,那么您要么需要将这些映射到您的项目中,要么不使用 Xcode 4.3 及更高版本。

于 2012-04-07T15:26:28.583 回答
1

您可以随时进入模型包并手动编辑内容文件。并不意味着这个新标准以后不会咬你。

于 2012-07-02T20:58:24.327 回答
0

我想你可以尝试在 4.2 中使用 big letter 打开同一个项目,然后在 4.3 中重新打开,这将遵守旧约定

于 2012-04-26T10:53:34.497 回答
0

我有类似的问题 - 我想使用以小写字母开头的实体名称,而 xcode 要求使用以大写字母开头的名称。我通过以下方式解决了这个问题:

  1. 为实体创建 NSManagedObject 子类 - 编辑器菜单中可用的选项
  2. 使用 xcode 重构来更改创建的子类的名称

重构也改变了数据模型中实体的名称。我相信可以使用相同的方法来更改属性的名称。我使用了 xcode 4.6.1。

于 2013-04-03T19:17:22.277 回答
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];
    }
 }
于 2014-01-07T10:13:20.673 回答