pathForResource:ofType:如果使用'Data model version files'的构建规则,则返回'nil'



我正试图在一个新项目中设置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"
];

编辑:正如Metable所评论的,现在主捆绑包无法定位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。。。

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

确保向项目添加一个生成规则,该规则将project.momd文件复制到应用程序的Resource目录中。

在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"

这很好用。不过,构建规则很奇怪。我在另一个项目中使用这些,没有任何问题。。。

谢谢Phillip&Metable!!