【发布时间】:2012-03-30 03:00:04
【问题描述】:
我在尝试处理某些事情和现在之间突然出现了这个随机问题。我什至尝试重新加载一个我知道 100% 正常工作的旧快照,但我就是想不出这个废话。
基本上我有一个类和一个视图控制器,该类正在尝试将一些数据传递给视图控制器,该类中的所有内容都运行良好,所有数据都已准备好并等待发送到视图控制器使用我设置的委托和协议,但是当我调试视图控制器时,它永远不会改变我在类中创建的视图控制器中的协议方法。我不知道这是一个简单的错误、疏忽还是我的代码中缺少的东西,我现在将我的代码写下来,希望其他人能看到我缺少的东西。
类.h
//This passes data back to the VehicleSearchViewController
@protocol SearchViewParsedData <NSObject>
- (void)sendManArray:(NSArray *)array;
- (void)sendModArray:(NSArray *)array;
@end
//..
id <SearchViewParsedData> SearchViewdelegate;
//..
//Delegates that will be acessed inside EngineRequests for passing the data mack to the viewcontroller
@property (strong) id <SearchViewParsedData> SearchViewdelegate;
//..
类.m
@synthesize SearchViewdelegate;
//..
//TODO: add if statments in this method so you can pass the data to the right methods and Views
- (void)parserDidEndDocument:(NSXMLParser *)parser
{
if ([methodName isEqualToString:@"GetMan"]) {
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K like %@",@"ISAMAN",@"T"];
NSArray *filteredArray = [parsedDataArrayOfDictionaries filteredArrayUsingPredicate:predicate];
NSLog(@"%@", filteredArray);
[[self SearchViewdelegate]sendMan:filteredArray];
}
//..
这就是我的课,然后在我的视图控制器中结束
viewcontroller.h
#import "myClass.h"
//..
@interface MyVewController : UITableViewController <SearchViewParsedData> {
//..
MyClass *myClassResponse;
//..
viewcontroller.m
- (void)viewDidLoad
{
[super viewDidLoad];
//..
engineResponses = [[EngineResponses alloc] init];
[engineResponses setSearchViewdelegate:self];
//..
}
#pragma - EngineResponses Reciver methods
- (void)sendManArray:(NSArray *)array
{
MyFilterArray = array;
[self.tableView reloadData];
}
这让我有点发疯。我确信我拥有完美的一切,但它只是永远无法到达 viewcontroller.m -(void)sendManArray...如果有人有任何想法,我很想听听。
这是我添加该 nslog 时正在生成的日志
NSLog(@"Checking filtered array %@ %@", [self SearchViewdelegate], filteredArray);
产生:
Checking filtered array (null) (
{
ISMAN = F;
ISVAR = T;
MAN = "BLAAA";
MANID = 3;
},
{
ISMAN = F;
ISVAR = F;
MAN = "BANG";
MANID = 3;
},
//etc
【问题讨论】:
-
代表传统上是弱的,_unsafe_unretained,或分配,不强。有没有可能 MyFilterArray 没有被分配和初始化?
-
我正在记录过滤后的数组并在其中显示正确的内容.. 但即使是这种情况,它也不应该出现在我的视图控制器中,并且在该方法中只表示 null .. .
-
当你这样记录时会发生什么: NSLog(@"%@ %@", [self SearchViewdelegate], filteredArray); ??鉴于您描述的症状,我敢打赌它的
[an array] -
我应该把那个 NSLog 放在哪里?别担心,我知道把它放在哪里了.. 现在试试。
-
好吧.. 很奇怪。你的权利......它有(空)但之后我得到了我想要的xml......但我不知道它来自哪里......我试图找到它,但它就像它的一部分一样打印出来......
标签: iphone ios delegates protocols