Попытка запустить App Store - ошибка "" в чем-то, не являющемся структурой или объединением " - PullRequest
0 голосов
/ 07 апреля 2010

Я пытаюсь запустить App Store без запуска Safari со всеми перенаправлениями и получаю сообщение об ошибке «Запрос на членство iTunesURL в чем-то, не являющемся структурой или объединением».

Я новичок во многом в этом, поэтому спасибо за терпение ко мне. Я думаю, что это как-то связано с тем, что я называю «self.iTunesURL», поскольку не думаю, что iTunesURL является частью текущего класса, но я могу ошибаться.

Заранее благодарю за помощь, пока я (медленно) изучаю все это.

SampleAppDelegate.h

-(void)launchStore:(NSURL *)iTunesURL;
-(void)connectionDidFinishLoading:(NSURLConnection *)connection;

SampleAppDelegate.m

// Process a LinkShare/TradeDoubler/DGM URL to something iPhone can handle
- (void)launchStore:(NSURL *)iTunesURL {

NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:[NSURLRequest requestWithURL:iTunesURL] delegate:self startImmediately:YES];
[conn release];
}

// Save the most recent URL in case multiple redirects occur
// "iTunesURL" is an NSURL property in your class declaration
- (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)response {
self.iTunesURL = [response URL];
return request;
}

// No more redirects; use the last URL saved
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
[[UIApplication sharedApplication] openURL:self.iTunesURL];
}

MyViewController.h

#import "SampleAppDelegate.h"

и у меня есть NSURL *iTunesURL; в фигурных скобках @interface.

@property (nonatomic, retain) NSURL *iTunesURL;

- (IBAction) proButtonPressed: (id)sender;  // press to launch App Store

MyViewController.m

#import "MyViewController.h"

@implementation MyViewController

@synthesize iTunesURL;

- (IBAction) proButtonPressed: (id) sender {

NSURL *iTunesLink = [NSURL URLWithString:@"actual http URL goes here"];
SampleAppDelegate *appDelegate = (SampleAppDelegate *)[[UIApplication sharedApplication] delegate];

[appDelegate launchStore:iTunesLink];

}

1 Ответ

1 голос
/ 07 апреля 2010

iTunesURL является свойством класса ViewController, и вы можете использовать ссылку self только в методах этого класса. Импорт класса ViewController.h не дает классу SampleAppDelegate возможности вызывать свойства класса ViewController, если он не является подклассом ViewController.

Вам необходимо создать новое другое свойство в SampleAppDelegate и присвоить этому свойству значение ViewController.iTunesURL.

...