我想将核心数据添加到现有的iPhone项目中,但我仍然遇到很多编译错误:
- NSManagedObjectContext undeclared
- Expected specifier-qualifier-list before 'NSManagedObjectModel'
- ...
Run Code Online (Sandbox Code Playgroud)
我已经将核心数据框架添加到目标(右键单击我的项目"Targets","Add" - "Existing Frameworks","CoreData.framework").
我的头文件:
NSManagedObjectModel *managedObjectModel;
NSManagedObjectContext *managedObjectContext;
NSPersistentStoreCoordinator *persistentStoreCoordinator;
[...]
@property (nonatomic, retain, readonly) NSManagedObjectModel *managedObjectModel;
@property (nonatomic, retain, readonly) NSManagedObjectContext *managedObjectContext;
@property (nonatomic, retain, readonly) NSPersistentStoreCoordinator *persistentStoreCoordinator;
Run Code Online (Sandbox Code Playgroud)
我错过了什么?开始一个新项目不是一个选择......
非常感谢!
编辑
对不起,我确实有这些实现...但似乎缺少库...实现方法已满,编译错误如" managedObjectContext undeclared"," NSPersistentStoreCoordinator undeclared",但也有"预期")'之前NSManagedObjectContext"(虽然它似乎括号是正确的)...
#pragma mark -
#pragma mark Core Data stack
/**
Returns the managed object context for the application.
If the context doesn't already exist, it is created and …Run Code Online (Sandbox Code Playgroud) 在WPF应用程序中,有一个Grid包含许多对象(它们来自自定义控件).我想使用上下文菜单对每个操作执行一些操作:
<Grid.ContextMenu>
<ContextMenu>
<MenuItem Name="EditStatusCm" Header="Change status" Click="EditStatusCm_Click"/>
</ContextMenu>
</Grid.ContextMenu>
Run Code Online (Sandbox Code Playgroud)
但是在事件处理程序中,我无法知道哪些对象被右键单击:
private void EditStatusCm_Click(object sender, RoutedEventArgs e)
{
MyCustControl SCurrent = new MyCustControl();
MenuItem menu = sender as MenuItem;
SCurrent = menu.DataContext as MyCustControl; // here I get a run-time error
SCurrent.Status = MyCustControl.Status.Sixth;
}
Run Code Online (Sandbox Code Playgroud)
在该注释行上调试器说:对象引用未设置为对象的实例.
请帮忙,我的代码有什么问题?
编辑(补充):
我尝试使用Command方法做同样的事情:
我宣布了一个DataCommands类,RoutedUICommand Requery然后使用Window.CommandBindings
<Window.CommandBindings>
<CommandBinding Command="MyNamespace:DataCommands.Requery" Executed="RequeryCommand_Executed"></CommandBinding>
</Window.CommandBindings>
Run Code Online (Sandbox Code Playgroud)
MenuItem的XAML现在看起来像:
<Grid.ContextMenu>
<ContextMenu>
<MenuItem Name="EditStatusCm" Header="Change status" Command="MyNamespace:DataCommands.Requery"/>
</ContextMenu>
</Grid.ContextMenu>
Run Code Online (Sandbox Code Playgroud)
事件处理程序如下所示:
private void RequeryCommand_Executed(object …Run Code Online (Sandbox Code Playgroud) 我使用深度优先搜索来识别有向加权图中的路径,同时重新访问属于循环的节点,并根据行进的总距离设置截止条件,或者从源节点停止.
据我所知,对于递归,深度优先搜索不需要显式堆栈结构,所以我想知道是否可以通过某种方式在没有显式堆栈的情况下进一步简化我的代码:
public class DFSonWeightedDirectedGraph {
private static final String START = "A";
private static final String END = "E";
private int pathLength = 0;
private int stops = 0;
public static void main(String[] args) {
//this is a directed weighted graph
WeightedDirectedGraph graph = new WeightedDirectedGraph();
graph.addEdge("A", "B", 15);
graph.addEdge("A", "D", 15);
graph.addEdge("A", "E", 27);
//(...) more edges added
Stack<String> visited = new Stack<String>();
visited.push(START);
new DFSonWeightedDirectedGraph().depthFirst(graph, visited);
}
private void depthFirst(WeightedDirectedGraph graph, Stack<String> visited) {
Collection<Map.Entry<String, Integer>> tree_of_children …Run Code Online (Sandbox Code Playgroud) 我如何在Ruby中执行这种类型的for循环?
for(int i=0; i<array.length; i++) {
}
Run Code Online (Sandbox Code Playgroud) 我想用Java生成一个.torrent文件,但是我不想要一个像抓取跟踪器,播种等任何东西的大API.这只适用于生成元数据的客户端.有哪些轻量级解决方案 我只生成一个.zip文件的.torrent.
谢谢!
在C++中,有没有办法查询对象的类型,然后使用该信息动态创建相同类型的新对象?
例如,假设我有一个简单的3类层次结构:
class Base
class Foo : public Base
class Bar : public Base
Run Code Online (Sandbox Code Playgroud)
现在假设我给你一个类型为Base的对象 - 实际上是Foo类型.有没有办法查询类型并使用该信息以后来创建Foo类型的新对象?
我有一个带有面板控件的WindowsForm,我用它来显示我的UserControls.我这样添加控件:
private void AddControl(Control control)
{
panel.Controls.Clear();
control.Size = new Size(panel.Width - 1, panel.Height - 1);
control.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles. Top;
panel.Controls.Add(control);
}
..
AddControl(new ucSomeControl());
Run Code Online (Sandbox Code Playgroud)
我只是单击了使用AddControl()的每个按钮,并且每次都看到内存使用量增加.我让应用程序运行,什么都不做,一个半小时,内存使用量从140mb减少到138mb,就像2mbs一样.你认为这是正常的还是我在控制添加方法上做错了什么我应该/可以改进以减少内存使用?
我已经创建了我的应用程序的4个版本:Debug,Release,with Dispose,with manuel GC call.
用我的原始代码
在内存使用方面,如5mb,我的应用程序的调试版本和发布版本之间几乎没有什么区别.这些版本的问题是我点击按钮越多,即使我点击相同的按钮并再次创建相同的UserControl,内存使用量也会同样增加.
随着Dispose
我添加了Chris Arnold的Dispose代码.内存使用率显着降低,虽然创建越来越多的控件仍然会增加内存使用量,但现在每个控件使用的内存要少得多.这是一个有价值的附录.
随着manuel GC通话
我在Dispose之后添加了这段代码:
GC.Collect();
GC.WaitForPendingFinalizers();
Run Code Online (Sandbox Code Playgroud)
答对了!内存使用量甚至比Dispose代码少.最好的部分是,即使我一遍又一遍地创建新的控件,内存使用量的增加也非常小,几乎是微不足道的.
我真的很喜欢使用Dispose + GC方法,但是每篇关于manuel GC调用的文章都非常不鼓励使用它.即使我没有任何自定义终结器/析构器,我也不确定是否使用它.