3

iOS アプリのバージョン管理で 2 つのブランチの複雑なマージに直面しています。で競合する行を特定して選択した後project.pbxproj、Xcode はファイルをロードしません。実行すると、次のようになりplutilます。

CFPropertyListCreateFromXMLData(): 古いスタイルの plist パーサー: 辞書にセミコロンがありません。

元に戻して(慎重に)マージを数回試みましたが、フォーマットの問題がどこにあるのかわかりませんが、毎回同じ結果が得られます。

自分が犯している間違いを見つけることができるように、少なくともエラーが発生しているまたはオブジェクトを見つけるために使用できるツールはありますか?

4

2 に答える 2

3

次のテストを作成しました。

#import <Foundation/Foundation.h>
#import <err.h>

int main(int argc, const char * argv[])
{

    @autoreleasepool {

        NSString *path = [[NSFileManager defaultManager] stringWithFileSystemRepresentation:argv[1] length:strlen(argv[1])];
        NSData *data = [NSData dataWithContentsOfFile:path];

        if (!data)
            errx(EXIT_FAILURE, "open failed: %s\n", argv[1]);

        NSString *errorString;
        id plist = [NSPropertyListSerialization propertyListFromData:data
                                                    mutabilityOption:NSPropertyListImmutable
                                                              format:NULL
                                                    errorDescription:&errorString];


        if (!plist)
            errx(EXIT_FAILURE, "%s\n", [errorString UTF8String]);

        printf("plist successfully read\n");
    }
    return 0;
}

変更した project.pbxproj で実行しました。

// !$*UTF8*$!
{
        archiveVersion = 1;
        classes = {
                x = 1
        };
...

次のエラーが発生しました:

2012-05-11 20:51:14.381 plist-test[41890:303] CFPropertyListCreateFromXMLData(): 古いスタイルの plist パーサー: 6 行目の辞書にセミコロンがありません。解析は中止されます。_CFPropertyListMissingSemicolon で中断してデバッグします。

于 2012-05-12T01:09:22.113 に答える
0

あなたはすでにこれを検討していると思いますが、私が目にする唯一のオプションは、簡単なユーティリティを作成することです。

あなたは試してみCFPropertyListIsValid()て、それが何か有用なものを吐き出すことを願っています. ヘッダーには次のように記載されています。

デバッグ ライブラリ バージョンは、役立つメッセージをいくつか吐き出します。

この機能により、ロギング アクティビティについてもう少し洞察が得られるのではないでしょうか? Apple が何を「役立つ」と考えているのか、または「一部」が何を意味するのかはわかりません (単に「いいえ。それは無効です」と返されるだけかもしれませんfalse)。

さらに、CFPropertyListCreateWithStream()一度に少しずつ読むと役立つ場合があります。NULL が返されるまで部分的にフィードすることで、エラーの場所をゼロにするために使用できます。NULL が検出されたときにサイズを削減すると、消化不良のポイントにさらに近づくことになります。

于 2012-05-11T14:17:58.940 に答える