0

我正在尝试在一个新项目中设置 CoreData,但不知何故卡在定位 momd 目录。

我发现了几个有类似问题的 stackoverflow 帖子,但无法通过提供的答案解决问题。所以这里是:是什么导致第一行返回“nil”而第二行实际上找到了 momd 目录?

NSURL *modelURL = [NSURL fileURLWithPath:
    [[NSBundle mainBundle] pathForResource:@"Project" ofType:@"momd"]
];

NSURL *modelURL = [NSURL fileURLWithPath:
    @"/Users/name/Library/Developer/Xcode/DerivedData/Project-afusjhpzsjyjdbesttxposfzlzrj/Build/Products/Debug/Project.app/Contents/MacOS/Project.momd"
];

编辑:正如 Metabble 所评论的,现在主捆绑包无法在 Resources 文件夹之外找到资源是合乎逻辑的。

但我的问题仍然存在。我发现了更多:我正在使用 mogenerator 生成类。(我使用了这些说明:http ://www.esenciadev.com/2011/05/mogen-and-xcode4-integration/ )。构建规则过程“数据模型版本文件”调用脚本。在该构建规则中,我将输出设置为 '${DERIVED_FILES_DIR}/${INPUT_FILE_BASE}.momd' 但看起来这不是 momd 的正确目的地:

error: Could not create bundle folder for versioned model at '/Users/user/Library/Developer/Xcode/DerivedData/Project-afusjhpzsjyjdbesttxposfzlzrj/Build/Products/Debug/Project.app/Contents/MacOS/Project.momd'

如果我删除构建规则,代码可以找到momd。但这会禁用 mogenerator...

有人知道我需要在构建规则中设置哪些输出文件吗?

4

2 回答 2

1

确保向项目添加构建规则,将 Project.momd 文件复制到应用程序的资源目录。

于 2012-11-28T18:42:02.313 回答
0

在Mogenerator 和 Xcode 4中找到了我的解决方法

我删除了构建规则,现在改用运行脚本阶段:

MODELS_DIR="${PROJECT_DIR}/Resources/Main/CoreData"
DATA_MODEL_PACKAGE="$MODELS_DIR/Project.xcdatamodeld"
CURRENT_VERSION=`/usr/libexec/PlistBuddy "$DATA_MODEL_PACKAGE/.xccurrentversion" -c 'print _XCCurrentVersionName'`

mogenerator --template-var arc=true --model "$DATA_MODEL_PACKAGE/$CURRENT_VERSION" --output-dir "$MODELS_DIR/Sources/Main/Classes"

这工作得很好。虽然关于构建规则很奇怪。我在不同的项目中使用它们没有任何问题......

谢谢菲利普和梅塔布尔!!

于 2012-11-28T18:38:32.600 回答