注意:我一直只使用Objective-C一周。
这是我的最终目标:我想呼叫服务器并获取一个包含urls和url描述的json文件。如果我无法获取该文件,我想显示错误视图。如果我可以获取该文件,我想在表格视图中显示其内容。
限制:我在Cocoa Touch静态库中(根据要求)将其包含在一个更大的应用程序中,该应用程序将“像”应用程序一样加载它。
我现在正在做的是我正在使用Reachability来检查与主机的连接。然后我打开文件的NSURLConnection。获取文件后,我使用json-framework解析json。 jsonObject的数据类型是id(afaik表示*)。
目前,所有这一切都发生在代表中。如果我在连接或文件检索时出错,我将rootView设置为错误视图控制器。否则,我将rootView设置为我的其他视图。
我已尝试在视图控制器中将jsonObject设置为extern的方法,但这不起作用。我尝试在视图控制器中设置一个属性,并在创建它之后在控制器中设置jsonObject,但是jsonObject在那时是零,所有内容都会因为错误的选择器或某些内容而出现错误。
我是否正朝着正确的方向前进?怎么这样做?
修改
我的视图控制器被输入为UINavigationController,我将最终使用的视图控制器粘贴到其中。当我尝试在视图控制器中调用setter时,我必须将UINavigationController转换为我的视图类型才能看到setter,但是当我运行它时,我收到以下错误:
SpringboardApplication[5850:40b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UINavigationController setJsonObject:]: unrecognized selector sent to instance 0x602ed20'
我称之为:
[(LU_SOCLINKS_RootViewController *) root_navigation_controller setJsonObject:jsonObject];
答案 0 :(得分:1)
“委托”是指应用代表?我假设视图控制器位于应用程序委托中的实例变量中,在这种情况下,您只需要在视图控制器中创建一个可用于传递数据的setter方法。
在视图控制器中:
·H
- (void)setData:(NSData/NSString/whatever *)data;
的.m
- (void)setData:(NSData/NSString/whatever *)data {
vcData = [data retain];
// do stuff with the data
}
在app delegate
中[viewController setData:theData];
这是一个简单的答案。我能正确理解你的问题吗?