1

iOS プロジェクトを初めて開始したとき、コア データで大文字を使用してプロパティ名 (FirstName、LastName など) を開始できました。Web サービスと plist を使用して CoreData にデータをフィードし、すべてのプロパティ名が正確に一致する場合、ローカルの CoraData DB に挿入されるオブジェクトの作成が大幅に簡素化され、超高速になるため、これは私にとって非常に有益です。これまでのところ問題はありませんでした。現在xCode 4.3.1では、命名規則の制限を回避できず、リモートDBが列名に大文字を使用しているため、ローカルの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

いつでもモデル パッケージに移動して、コンテンツ ファイルを手動で編集できます。この新しい標準が後であなたを苦しめないという意味ではありません。

于 2012-07-02T20:58:24.327 に答える
1

簡単な答えはノーです。データがリモート DB から出力される方法を制御できる場合は、次のようにすることができます。

Select FirstName as firstName, LastName as lastName ...

それが面倒な場合は、プロジェクトでこれらをマップするか、Xcode 4.3 以降を使用しないようにする必要があります。

于 2012-04-07T15:26:28.583 に答える
0

同じプロジェクトを 4.2 でビッグレターを使用して開き、4.3 で再度開くと、古い慣習が尊重されると思います。

于 2012-04-26T10:53:34.497 に答える
0

Web サービスの JSON 応答を Core Data モデルにマッピングするときに、同じ問題が発生しました。Core Data モデルを変更する代わりに、マッピング コードを次のように変更して解決しました。

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 に答える
0

同様の問題がありました-小文字で始まるエンティティ名を使用したかったのですが、xcodeは大文字で始まる名前を使用する必要がありました。この問題を次の方法で解決しました。

  1. エンティティの NSManagedObject サブクラスを作成 - エディタ メニューで利用可能なオプション
  2. 作成したサブクラスの名前を変更するために xcode リファクタリングを使用しました

リファクタリングにより、データ モデル内のエンティティの名前も変更されました。属性の名前を変更するために同じ方法を使用できると思います。私はxcode 4.6.1を使用しました。

于 2013-04-03T19:17:22.277 に答える