我不知道爲什麼這很困難,但我無法得到它的工作。這是我的基本流程:從NSObject類傳遞一個值到UIViewController
我有一個UIViewController與一個子視圖UIView本身有一個子視圖UIButton。單擊按鈕實例化一個名爲TwitterController的NSObject新實例,爲twitter提要創建一個NSURL,然後將控制權交給TC進行URLConnection並序列化返回的數據。
下面是視圖控制器的相關代碼(Pruit_Igoe是我,隨時跟蹤,雖然我不太發佈:d):
- (void) getTwitter {
//load new manager
twitterManager = [TwitterController new];
[twitterManager showTwitterFeed:vTwitterFeed:self];
NSURL* twitterFeedPath = [NSURL URLWithString: @"http://api.twitter.com/1/statuses/user_timeline.json?screen_name=Pruit_Igoe"];
[twitterManager getTwitterFeed:twitterFeedPath];
//toggle the twitter view
[self toggleView:vTwitterFeed];
[self toggleView:vContactCard];
}
- showTwitterFeed轉儲視圖vTwitterFeed的對象(按鈕關閉視圖,圖像等)
- getTwitterFeed開始NSURLConnection的過程
在TwitterController,我得到了Twitter的飼料,並在這裏對其進行處理:
- (void)connectionDidFinishLoading:(NSURLConnection *)theConnection {
//do something with the data!
NSError *e = nil;
//parse the json data
NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData: receivedData options: NSJSONReadingMutableContainers error: &e];
//dump it into an array
tweetArray = [[NSMutableArray alloc] init];
for(NSDictionary* thisTweetDict in jsonArray) {
NSString* tweet = [thisTweetDict objectForKey:@"text"];
[tweetArray addObject:tweet];
}
}
這一切工作正常,登錄tweetArray和所有的文字是存在的,登錄thisTweetDict和所有的Twitter發回大量的數據中是存在的。問題是我想通過tweetArray回到ViewController,但我似乎無法弄清楚如何。
我已經做了以下內容:
試圖從getTwitterFeed返回TweetArray但回來爲空(我的猜測是該方法返回的陣列之前連接過完)
試圖把它UserDefaults,但我保持null(與上面相同的猜測,但後來我把它放在connectionDidFinish,仍然爲空)
試圖將ViewController的引用傳遞給TwitterController,然後調用VC中的方法將數組傳遞給但在TwitterController我錯誤了,因爲它說我的VC實例不識別選擇器。 (它在那裏,我已經三重檢查)。
我相信這很簡單,我只是很密集,但有人可以幫助我呢?
編輯:這就是我試圖通過它回到VC:
我會VC.h通過VC採用這種方法TC(這是VC)
[twitterManager showTwitterFeed:vTwitterFeed:self];
我有一個*的UIViewController thisViewController
在VC.m在showTwitterFeed:
- (void) showTwitterFeed : (UIView*) theTwitterView : (UIViewController*) theViewController {
thisViewController = theViewController;
//...other code to build view objects
然後在
- (void)connectionDidFinishLoading:(NSURLConnection *)theConnection {
...
for(NSDictionary* thisTweetDict in jsonArray) {
NSString* tweet = [thisTweetDict objectForKey:@"text"];
[tweetArray addObject:tweet];
}
[thisViewController getTwitterFeed:tweetArray]; //<--this would error out saying selector not available
早在VC.h
- (void) getTwitterFeed : (NSArray*) theTwitterFeed;
和VC。米
- (void) getTwitterFeed : (NSArray*) theTwitterFeed {
NSLog(@"%@", theTwitterFeed);
}
您可以張貼在那裏你試圖把tweetArray在視圖控制器的代碼?及其定義? – giorashc
是的,堅持幾秒鐘,我會在... – PruitIgoe