我已經創建了一個單例類,它應該處理爲我的應用程序加載的所有數據,所有數據都是從Web界面加載的,但是在不同的請求中加載。單身類加載數據
DataModel *instance = [[[DataModel instance] init] autorelease];
[instance doRequestFromLocation:@"users" withPostType:@"GET" andData:@"data"];
[instance doRequestFromLocation:@"timezones" withPostType:@"GET" andData:@"data"];
這將爲例如加載所有的用戶在一個請求,然後加載其他所有時區。
我的單例類看起來是這樣的:
// Send a curl request
- (void)doRequestFromLocation:(NSString *)location withPostType:(NSString *)type andData:(NSString *)data
{
// NSArray *keys = [NSArray arrayWithObjects:@"username", @"password", nil];
// NSArray *objects = [NSArray arrayWithObjects:@"test", @"test", nil];
// NSDictionary *theRequestDictionary = [NSDictionary dictionaryWithObject:objects forKey:keys];
NSString *username = @"username";
NSString *password = @"password";
NSString *urlString = [url stringByAppendingFormat:@"%@", location];
NSMutableString *loginString = (NSMutableString *)[@"" stringByAppendingFormat:@"%@:%@", username, password];
NSLog(@"%@", loginString);
NSString *encodedLoginData = [Base64 encode:[loginString dataUsingEncoding:NSUTF8StringEncoding]];
NSString *authHeader = [@"Basic " stringByAppendingFormat:@"%@",encodedLoginData];
NSLog(@"%@", authHeader);
NSURL *url = [NSURL URLWithString:urlString];
NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url];
[theRequest setHTTPMethod:type];
[theRequest setValue:authHeader forHTTPHeaderField:@"Authorization"];
[theRequest setValue:@"application/xml" forHTTPHeaderField:@"Content-type"];
[theRequest setValue:@"application/xml" forHTTPHeaderField:@"Accept"];
NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
}
#pragma mark -
#pragma mark Responses
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
NSLog(@"didFailWithError");
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
NSString *responseString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@", responseString);
}
- (void) connectionDidFinishLoading:(NSURLConnection *)connection
{
NSLog(@"connectionDidFinishLoading");
}
雖然這一切工作正常,我對我的下一個步驟有點卡住了。
我希望能夠從任何地方調用doRequestFromLocation(現在可能),但我希望其他類可以響應它進入didReceiveData。
我在想我的數據模型將不知何故委託其他類?
委託陣列可以處理這個問題,但你也檢查可可NSNotificationCenter和鍵 - 值觀察功能? –
我剛剛嘗試NSNotificationCenter基於user523234回覆,它工作正常 –