Iphone 将两个表视图合并到具有核心数据的选项卡栏时出现问题

Iphone 将两个表视图合并到具有核心数据的选项卡栏时出现问题,iphone,objective-c,Iphone,Objective C,我有一个带有多个视图的选项卡栏,一个带有连接到核心数据的tableview。现在我在另一个项目中又创建了一个tableview,我想将它合并到我的第一个项目中。这对我来说并不新鲜,我以前在另一个项目中做过,在那里我有三个具有不同核心数据表的TableView,都工作得很好。所以我想这应该是在公园里散步 在我的AppDelage.m和.h中,我将managedObjectContext的所有代码添加并复制到managedObjectContext2。并制作了一个新的导航控制器“navigation

我有一个带有多个视图的选项卡栏,一个带有连接到核心数据的tableview。现在我在另一个项目中又创建了一个tableview,我想将它合并到我的第一个项目中。这对我来说并不新鲜,我以前在另一个项目中做过,在那里我有三个具有不同核心数据表的TableView,都工作得很好。所以我想这应该是在公园里散步

在我的AppDelage.m和.h中,我将managedObjectContext的所有代码添加并复制到managedObjectContext2。并制作了一个新的导航控制器“navigationController2”

然后在protokollist.m中,我将managedObjectContext更改为managedObjectContext2。并在MainWindow.nib中进行了必要的连接

但当我尝试运行该项目时,会收到以下错误消息:

2011-07-24 18:22:58.188 Kortspel[1346:207] Unknown class ProtokollList in Interface Builder file.
2011-07-24 18:22:58.198 Kortspel[1346:207] -[UIViewController setManagedObjectContext2:]: unrecognized selector sent to instance 0x4d13c40
2011-07-24 18:22:58.199 Kortspel[1346:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIViewController setManagedObjectContext2:]: unrecognized selector sent to instance 0x4d13c40'
*** Call stack at first throw:
(
    0   CoreFoundation                      0x00fab5a9 __exceptionPreprocess + 185
    1   libobjc.A.dylib                     0x010ff313 objc_exception_throw + 44
    2   CoreFoundation                      0x00fad0bb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
    3   CoreFoundation                      0x00f1c966 ___forwarding___ + 966
    4   CoreFoundation                      0x00f1c522 _CF_forwarding_prep_0 + 50
    5   Kortspel                            0x00001f28 -[KortAppDelegate applicationDidFinishLaunching:] + 709
    6   UIKit                               0x002c4ce2 -[UIApplication _callInitializationDelegatesForURL:payload:suspended:] + 1252
    7   UIKit                               0x002c6d88 -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 439
    8   UIKit                               0x002d1617 -[UIApplication handleEvent:withNewEvent:] + 1533
    9   UIKit                               0x002c9abf -[UIApplication sendEvent:] + 71
    10  UIKit                               0x002cef2e _UIApplicationHandleEvent + 7576
    11  GraphicsServices                    0x01903992 PurpleEventCallback + 1550
    12  CoreFoundation                      0x00f8c944 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52
    13  CoreFoundation                      0x00eeccf7 __CFRunLoopDoSource1 + 215
    14  CoreFoundation                      0x00ee9f83 __CFRunLoopRun + 979
    15  CoreFoundation                      0x00ee9840 CFRunLoopRunSpecific + 208
    16  CoreFoundation                      0x00ee9761 CFRunLoopRunInMode + 97
    17  UIKit                               0x002c67d2 -[UIApplication _run] + 623
    18  UIKit                               0x002d2c93 UIApplicationMain + 1160
    19  Kortspel                            0x00001c40 main + 102
    20  Kortspel                            0x00001bd1 start + 53
)
terminate called after throwing an instance of 'NSException'
2011-07-25 20:06:56.588 Kortspel[3205:207] Unknown class ProtokollList in Interface Builder file.
2011-07-25 20:07:01.585 Kortspel[3205:207] -[UIViewController tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0x590f3f0
2011-07-25 20:07:01.587 Kortspel[3205:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIViewController tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0x590f3f0'
*** Call stack at first throw:
(
    0   CoreFoundation                      0x00fb25a9 __exceptionPreprocess + 185
    1   libobjc.A.dylib                     0x01106313 objc_exception_throw + 44
    2   CoreFoundation                      0x00fb40bb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
    3   CoreFoundation                      0x00f23966 ___forwarding___ + 966
    4   CoreFoundation                      0x00f23522 _CF_forwarding_prep_0 + 50
    5   UIKit                               0x004882b7 -[UISectionRowData refreshWithSection:tableView:tableViewRowData:] + 1834
    6   UIKit                               0x00485d88 -[UITableViewRowData numberOfRows] + 108
    7   UIKit                               0x00339677 -[UITableView noteNumberOfRowsChanged] + 132
    8   UIKit                               0x00346708 -[UITableView reloadData] + 773
    9   UIKit                               0x00343844 -[UITableView layoutSubviews] + 42
    10  QuartzCore                          0x01f52a5a -[CALayer layoutSublayers] + 181
    11  QuartzCore                          0x01f54ddc CALayerLayoutIfNeeded + 220
    12  QuartzCore                          0x01efa0b4 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 310
    13  QuartzCore                          0x01efb294 _ZN2CA11Transaction6commitEv + 292
    14  QuartzCore                          0x01efb46d _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 99
    15  CoreFoundation                      0x00f9389b __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 27
    16  CoreFoundation                      0x00f286e7 __CFRunLoopDoObservers + 295
    17  CoreFoundation                      0x00ef11d7 __CFRunLoopRun + 1575
    18  CoreFoundation                      0x00ef0840 CFRunLoopRunSpecific + 208
    19  CoreFoundation                      0x00ef0761 CFRunLoopRunInMode + 97
    20  GraphicsServices                    0x019091c4 GSEventRunModal + 217
    21  GraphicsServices                    0x01909289 GSEventRun + 115
    22  UIKit                               0x002d9c93 UIApplicationMain + 1160
    23  Kortspel                            0x00002524 main + 102
    24  Kortspel                            0x000024b5 start + 53
)
terminate called after throwing an instance of 'NSException'
我不知道它说它不识别“protokollist”类,因为它是在protokollist.h中定义的

有人知道吗?这是发射前的最后一步

编辑: 如果我尝试空白:

/*
ProtokollList *protokollList = (ProtokollList *)[navigationController2 topViewController];
    // Set its managedObjectContext property to the managed object context 
    protokollList.managedObjectContext2 = self.managedObjectContext2;
*/
我可以打开项目,但当我单击Protokollist tableview时,我会收到以下新的错误消息:

2011-07-24 18:22:58.188 Kortspel[1346:207] Unknown class ProtokollList in Interface Builder file.
2011-07-24 18:22:58.198 Kortspel[1346:207] -[UIViewController setManagedObjectContext2:]: unrecognized selector sent to instance 0x4d13c40
2011-07-24 18:22:58.199 Kortspel[1346:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIViewController setManagedObjectContext2:]: unrecognized selector sent to instance 0x4d13c40'
*** Call stack at first throw:
(
    0   CoreFoundation                      0x00fab5a9 __exceptionPreprocess + 185
    1   libobjc.A.dylib                     0x010ff313 objc_exception_throw + 44
    2   CoreFoundation                      0x00fad0bb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
    3   CoreFoundation                      0x00f1c966 ___forwarding___ + 966
    4   CoreFoundation                      0x00f1c522 _CF_forwarding_prep_0 + 50
    5   Kortspel                            0x00001f28 -[KortAppDelegate applicationDidFinishLaunching:] + 709
    6   UIKit                               0x002c4ce2 -[UIApplication _callInitializationDelegatesForURL:payload:suspended:] + 1252
    7   UIKit                               0x002c6d88 -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 439
    8   UIKit                               0x002d1617 -[UIApplication handleEvent:withNewEvent:] + 1533
    9   UIKit                               0x002c9abf -[UIApplication sendEvent:] + 71
    10  UIKit                               0x002cef2e _UIApplicationHandleEvent + 7576
    11  GraphicsServices                    0x01903992 PurpleEventCallback + 1550
    12  CoreFoundation                      0x00f8c944 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52
    13  CoreFoundation                      0x00eeccf7 __CFRunLoopDoSource1 + 215
    14  CoreFoundation                      0x00ee9f83 __CFRunLoopRun + 979
    15  CoreFoundation                      0x00ee9840 CFRunLoopRunSpecific + 208
    16  CoreFoundation                      0x00ee9761 CFRunLoopRunInMode + 97
    17  UIKit                               0x002c67d2 -[UIApplication _run] + 623
    18  UIKit                               0x002d2c93 UIApplicationMain + 1160
    19  Kortspel                            0x00001c40 main + 102
    20  Kortspel                            0x00001bd1 start + 53
)
terminate called after throwing an instance of 'NSException'
2011-07-25 20:06:56.588 Kortspel[3205:207] Unknown class ProtokollList in Interface Builder file.
2011-07-25 20:07:01.585 Kortspel[3205:207] -[UIViewController tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0x590f3f0
2011-07-25 20:07:01.587 Kortspel[3205:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIViewController tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0x590f3f0'
*** Call stack at first throw:
(
    0   CoreFoundation                      0x00fb25a9 __exceptionPreprocess + 185
    1   libobjc.A.dylib                     0x01106313 objc_exception_throw + 44
    2   CoreFoundation                      0x00fb40bb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
    3   CoreFoundation                      0x00f23966 ___forwarding___ + 966
    4   CoreFoundation                      0x00f23522 _CF_forwarding_prep_0 + 50
    5   UIKit                               0x004882b7 -[UISectionRowData refreshWithSection:tableView:tableViewRowData:] + 1834
    6   UIKit                               0x00485d88 -[UITableViewRowData numberOfRows] + 108
    7   UIKit                               0x00339677 -[UITableView noteNumberOfRowsChanged] + 132
    8   UIKit                               0x00346708 -[UITableView reloadData] + 773
    9   UIKit                               0x00343844 -[UITableView layoutSubviews] + 42
    10  QuartzCore                          0x01f52a5a -[CALayer layoutSublayers] + 181
    11  QuartzCore                          0x01f54ddc CALayerLayoutIfNeeded + 220
    12  QuartzCore                          0x01efa0b4 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 310
    13  QuartzCore                          0x01efb294 _ZN2CA11Transaction6commitEv + 292
    14  QuartzCore                          0x01efb46d _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 99
    15  CoreFoundation                      0x00f9389b __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 27
    16  CoreFoundation                      0x00f286e7 __CFRunLoopDoObservers + 295
    17  CoreFoundation                      0x00ef11d7 __CFRunLoopRun + 1575
    18  CoreFoundation                      0x00ef0840 CFRunLoopRunSpecific + 208
    19  CoreFoundation                      0x00ef0761 CFRunLoopRunInMode + 97
    20  GraphicsServices                    0x019091c4 GSEventRunModal + 217
    21  GraphicsServices                    0x01909289 GSEventRun + 115
    22  UIKit                               0x002d9c93 UIApplicationMain + 1160
    23  Kortspel                            0x00002524 main + 102
    24  Kortspel                            0x000024b5 start + 53
)
terminate called after throwing an instance of 'NSException'
致以最良好的祝愿, xqtr编辑:

我知道关键点是关于IB的警告(一开始没有注意到)

您可以检查protokollist.h和protokollist.m是否有效地分配给您正在构建的目标吗?(我想是的,否则你会有更多的链接问题,无论如何,这是一个基本的检查)

如果这是确定的,那么我会简单地尝试一个清洁和重建所有

如果这不能解决问题,那么这可能意味着链接器没有在最终二进制文件中包含protokollist.m,因为进行了一些优化(该类可能永远不会在代码的其余部分中引用,仅在Interface Builder中引用)。解决方法是将
-all\u load
添加到项目的链接器标志中

如果这没有帮助,我很难过,但我没有更多的建议

您的电话是:

    protokollList.managedObjectContext2 = self.managedObjectContext2;
protokollist
中找不到名为
managedObjectContext2
的属性。这可以通过以下行进行推断:

-[UIViewController setManagedObjectContext2:]: unrecognized selector sent to instance 0x4d13c40
因此,您可以在
protokollist
中定义
managedObjectContext2
(它应该是
UIViewController

编辑

接口协议:UITableViewController{
NSFetchedResultsController*FetchedResultsController 2;
NSManagedObjectContext*managedObjectContext2;
}
@属性(非原子,保留)NSManagedObjectContext*managedObjectContext2;
@结束

Hi@sergio,谢谢您的回复!在ProtokollList.h中,我已经定义了managedObjectContext2:@interface ProtokollList:UITableViewController{NSFetchedResultsController*fetchedResultsController2;NSManagedObjectContext*managedObjectContext2;}@end或者我做了什么错事吗?您应该缺少属性定义,请参阅我的编辑,不要忘了
.m
文件中的
@synthesis
…不,我也有属性定义,所以不可能是它。@属性(非原子,保留)NSFetchedResultsController*FetchedResultsController;2;@属性(非原子,保留)NSManagedObjectContext*managedObjectContext2;和@synthesisfetchedresultscoontroller2,managedObjectContext2;再次感谢您的回复和新的编辑。我都试过了,但是我得到了相同的错误信息。真烦人。我会发布整个代码,但不能,因为发布点太少了。我将在几个小时后发布。还要检查appDelegate中的
[navigationController2 topViewController]
是否返回ProtoKollist类型的真实对象,以及演员阵容是否在玩把戏。。。