Xcode CoreData';名称必须以小写字母开头';-我能绕开这个吗?

Xcode CoreData';名称必须以小写字母开头';-我能绕开这个吗?,xcode,core-data,naming-conventions,Xcode,Core Data,Naming Conventions,当我第一次启动iOS项目时,我可以在核心数据中使用大写字母来启动我的属性名称(FirstName、LastName等)。这对我非常有益,因为我使用web服务和plists将数据馈送到CoreData,如果所有属性名称完全匹配,那么插入到本地CoraData DB中的对象的创建将大大简化,而且速度非常快。到目前为止,这还不是一个问题。目前在xCode 4.3.1中,我无法绕过命名约定的限制,这让我非常头疼,因为我的远程数据库使用大写字母作为它的列名,而这些列名又与我的本地CoreData属性不匹配

当我第一次启动iOS项目时,我可以在核心数据中使用大写字母来启动我的属性名称(FirstName、LastName等)。这对我非常有益,因为我使用web服务和plists将数据馈送到CoreData,如果所有属性名称完全匹配,那么插入到本地CoraData DB中的对象的创建将大大简化,而且速度非常快。到目前为止,这还不是一个问题。目前在xCode 4.3.1中,我无法绕过命名约定的限制,这让我非常头疼,因为我的远程数据库使用大写字母作为它的列名,而这些列名又与我的本地CoreData属性不匹配


在xCode中是否有解决方法?

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

Select FirstName as firstName, LastName as lastName ...

如果这太麻烦了,那么您需要在项目中映射这些数据,或者不使用Xcode 4.3及更高版本。

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

Select FirstName as firstName, LastName as lastName ...

如果这太麻烦了,那么您需要在项目中映射这些字符,或者不使用Xcode 4.3及更高版本。

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

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

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

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

我想您可以尝试在4.2中使用大号字母打开同一个项目,然后在4.3中重新打开,这将遵守旧惯例

我想您可以尝试在4.2中使用大号字母打开同一个项目,然后在4.3中重新打开,这将遵守旧的约定

您始终可以进入模型包并手动编辑内容文件。这并不意味着这个新标准以后不会对您产生影响。

您始终可以进入模型包并手动编辑内容文件。这并不意味着这个新标准以后不会对你产生影响。

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

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

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

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

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

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

    将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];
        }
     }
    

    在将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];
        }
     }
    

    他们在那里添加了一个蹩脚的、不错的更改-似乎有一个名为isDeleted的属性现在在我的模型上也是一个问题-不高兴:(对不起,伙计。类名很快就会被迫以大写字母开头。糟糕,他们在其中添加了很好的更改-似乎有一个名为isDeleted的属性现在在我的模型上也是一个问题-不高兴:(对不起,伙计。类名很快就会被迫以大写字母开头。