Guest Ramm Posted May 10, 2007 Share Posted May 10, 2007 How do I automatically add the "http://" prefix to a web address in Cocoa/Xcode? I am working on a browser and would like to know, so that way I don't have to enter in "http://example.com" every time. Any ideas? I have checked out cocoadevcentral and some other sites to no avail. Here is pretty much my whole MyDocument.m Objective-C code: // // MyDocument.m // Rammbrowse // // Created by Rammy on 5/8/07. // Copyright RammSoft. All rights reserved. // #import "PageLoad.h" #import "MyDocument.h" static NSString *defaultHP =@"http://www.insanelymac.com"; @implementation MyDocument - (id)init { self = [super init]; if (self) { // Add your subclass-specific initialization here. // If an error occurs here, send a [self release] message and return nil. } return self; } - (NSString *)windowNibName { // Override returning the nib file name of the document // If you need to use a subclass of NSWindowController or if your document supports multiple NSWindowControllers, you should remove this method and override -makeWindowControllers instead. return @"MyDocument"; } - (void)windowControllerDidLoadNib:(NSWindowController *) aController { [super windowControllerDidLoadNib:aController]; [webView setUIDelegate:self]; [webView setGroupName:@"MyDocument"]; [urlString setStringValue:defaultHP]; [[webView mainFrame] loadRequest: [NSURLRequest requestWithURL: [NSURL URLWithString:defaultHP]]]; [webView setFrameLoadDelegate:self]; } - (NSData *)dataRepresentationOfType:(NSString *)aType { // Insert code here to write your document from the given data. You can also choose to override -fileWrapperRepresentationOfType: or -writeToFile:ofType: instead. // For applications targeted for Tiger or later systems, you should use the new Tiger API -dataOfType:error:. In this case you can also choose to override -writeToURL:ofType:error:, -fileWrapperOfType:error:, or -writeToURL:ofType:forSaveOperation:originalContentsURL:error: instead. return nil; } - (BOOL)loadDataRepresentation:(NSData *)data ofType:(NSString *)aType { // Insert code here to read your document from the given data. You can also choose to override -loadFileWrapperRepresentation:ofType: or -readFromFile:ofType: instead. // For applications targeted for Tiger or later systems, you should use the new Tiger API readFromData:ofType:error:. In this case you can also choose to override -readFromURL:ofType:error: or -readFromFileWrapper:ofType:error: instead. return YES; } - (IBAction)connectURL:(id)sender{ [urlString setStringValue:[sender stringValue]]; [[webView mainFrame] loadRequest: [NSURLRequest requestWithURL: [NSURL URLWithString: [sender stringValue]]]]; } - (id)webView { return webView; } - (WebView *)webView:(WebView *)sender createWebViewWithRequest: (NSURLRequest *)request { id myDocument = [ [NSDocumentController sharedDocumentController] openUntitledDocumentOfType: @"DocumentType" display:YES]; [[[myDocument webView] mainFrame] loadRequest:request]; return [myDocument webView]; } - (void)webViewShow:(WebView *)sender { id myDocument = [[NSDocumentController sharedDocumentController] documentForWindow: [sender window]]; [myDocument showWindows]; } -(void)setDefaultHomepage:(NSString*)homepage{ defaultHP = homepage; } -(NSString *)getDefaultHomepage{ return defaultHP; } - (void)webView:(WebView *)sender didStartProvisionalLoadForFrame: (WebFrame *)frame { // Only report feedback for the main frame. if (frame == [sender mainFrame]){ NSString *url = [[[ [frame provisionalDataSource] request] URL] absoluteString]; [urlString setStringValue:url]; } } - (void)webView:(WebView *)sender didReceiveTitle:(NSString *)title forFrame:(WebFrame *)frame { // Report feedback only for the main frame. if (frame == [sender mainFrame]){ [[sender window] setTitle:title]; } } @end Any ideas? Link to comment Share on other sites More sharing options...
Korrupted Posted May 29, 2007 Share Posted May 29, 2007 Couldn't you just do something as simple as reading the contents of the address bar/box, and if it's missing http://, then append it to the beginning? [b]This is pseudo code[/b] if( ! AddressBox.StringValue().Contains("http://") ) then AddressBox.Text = "http://" + AddressBox.Text end if Link to comment Share on other sites More sharing options...
Guest Ramm Posted May 29, 2007 Share Posted May 29, 2007 Well, based on the code you showed above, I don't think you are thinking "Cocoa." Isn't the code above Basic? I am coding in Objective-C. And also, I know what I have to do (read to see if it contains HTTP://, if it doesn't, add http://) Link to comment Share on other sites More sharing options...
Korrupted Posted May 29, 2007 Share Posted May 29, 2007 Did you read my first line? I said it was pseudo code. Code that's mostly in English, but looks similar to code to help give you a basic idea. Link to comment Share on other sites More sharing options...
Guest Ramm Posted May 30, 2007 Share Posted May 30, 2007 Heh, sorry I have never heard that term before. Well, I know that that is what I need to do, I just don't know how to do it in Obj-C :/ Link to comment Share on other sites More sharing options...
DiegoMax Posted May 30, 2007 Share Posted May 30, 2007 If i remember correctly, in objC, strings cant be compared "directly". You need to use a string comparison function called "isEqualToString" or something like that. Link to comment Share on other sites More sharing options...
DiegoMax Posted May 30, 2007 Share Posted May 30, 2007 Ok, some logics for you Ramm. The first thing you should do is to check the whole string to see if it contains the substring "http://" if ([yourString rangeOfString:@"http://"] == 0) // This function returns 0 if the substring is not found { // so if it IS equal to zero, (substring not found) we dont have the http://, then let's add it. NSString *httpPrefix = @"http://"; // CREATE a variable of type string with the "http://" prefix NSString *correctURL = [httpPrefix stringByAppendingString:yourString]; // Combine both strings to get the final one } // and later you should take care of instruct webkit to use the variable "correctURL". This code could have little mistakes, i did it without actually testing it, but i think you got the idea. Hope it helps.- Link to comment Share on other sites More sharing options...
AppleLegal Posted May 31, 2007 Share Posted May 31, 2007 Webkit already adds http:// to the beginning of each url if its not there. Stop wasting your time reinventing the wheel. And dont turn the wheel into a rectangle. k? Link to comment Share on other sites More sharing options...
Guest Ramm Posted May 31, 2007 Share Posted May 31, 2007 Thanks, Deigo. Link to comment Share on other sites More sharing options...
Recommended Posts