或者你可以在这里按照这些 lil 说明进行操作;)
要在运行时更改连接,您必须基本上设置对象存储协调器
您可以像这样创建自定义对象存储协调器:
NSMutableDictionary<String, String> temp = new NSMutableDictionary<String, String>();
temp.put("URL", String.format("%s?useBundledJdbcInfo=true", url));
temp.put("username", username);
temp.put("password", password);
temp.put("name", name);
connectionDictionary=temp.immutableClone();
// Create a new Object store coordinator
objectStoreCoordinator = new ERXObjectStoreCoordinator();
ERXModelGroup.setModelGroupForObjectStoreCoordinator(
objectStoreCoordinator, ERXModelGroup.defaultGroup()
);
// Set the model that you want to use to connect to multiple databases
EOAdaptor adaptor =ERXDatabaseContext.registeredDatabaseContextForModel(
ERXModelGroup.defaultGroup().modelNamed("YourModelName"),
objectStoreCoordinator
).adaptorContext().adaptor();
// update the connection dictionary
adaptor.setConnectionDictionary(
updateDictionary(adaptor.connectionDictionary(),
connectionDictionary)
);
有了这个,您可以轻松创建指向您选择的数据库的新编辑上下文
ERXEC.newEditingContext(objectStoreCoordinator);
如果您的应用程序被多个用户使用,并且他们都需要在多个 DB 之间切换而不相互干扰,我建议您不要使用 Shared Editing Context。
像这样,您可以避免人们更改对象存储协调器以导致其他人也指向该数据库(不是那么有趣)。