Xcode CoreData';名称必须以小写字母开头';-我能绕开这个吗?
当我第一次启动iOS项目时,我可以在核心数据中使用大写字母来启动我的属性名称(FirstName、LastName等)。这对我非常有益,因为我使用web服务和plists将数据馈送到CoreData,如果所有属性名称完全匹配,那么插入到本地CoraData DB中的对象的创建将大大简化,而且速度非常快。到目前为止,这还不是一个问题。目前在xCode 4.3.1中,我无法绕过命名约定的限制,这让我非常头疼,因为我的远程数据库使用大写字母作为它的列名,而这些列名又与我的本地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属性不匹配
在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要求使用以大写字母开头的名称。我通过以下方式解决了这个问题:
重构还更改了数据模型中实体的名称。我相信同样的方法也可以用于更改属性的名称。我使用了xcode 4.6.1。我也有类似的问题-我想使用以小写字母开头的实体名称,而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的属性现在在我的模型上也是一个问题-不高兴:(对不起,伙计。类名很快就会被迫以大写字母开头。