Не могу написать в .plist - PullRequest
1 голос
/ 31 марта 2012

У меня есть небольшое приложение, которое по умолчанию использует YouTube в качестве домашней страницы.Вы можете изменить его в небольшом меню, но оно не работает, и я не знаю почему.

Вот код

viewController 

.h
#import <UIKit/UIKit.h>


@interface ViewController : UIViewController{
    IBOutlet UIWebView *webView;

}
@property (retain, nonatomic) NSArray *array;
@property (retain, nonatomic) NSString *string1;
-(NSString *) dataFilePath;
- (IBAction)settings:(id)sender;
- (IBAction)home:(id)sender;

@end

.m

#import "ViewController.h"
#import "settings.h"


@implementation ViewController
@synthesize array;
@synthesize string1;
- (void)viewDidLoad
{
[super viewDidLoad];

    if ([string1 isEqual:@"youtube"]) {
NSMutableArray *Array = [[NSMutableArray alloc] init];
[Array addObject:@"http://www.youtube.com"];
[Array writeToFile:[self dataFilePath] atomically:YES];

    }

NSString *filePath = [self dataFilePath]; 
if ([[NSFileManager defaultManager] fileExistsAtPath:filePath])
{ 
    array = [[NSArray alloc] initWithContentsOfFile:filePath];
}
NSString *string = [NSString stringWithString:[array objectAtIndex:0]];
  [webView loadRequest:[[NSURLRequest alloc] initWithURL:[[NSURL alloc] initWithString:string]]];

}                   

-(NSString *) dataFilePath
{ 
    NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentDirectory = [path objectAtIndex:0]; 

    return [documentDirectory stringByAppendingPathComponent:@"url.plist"];
    string1 = @"youtube";

}

- (IBAction)settings:(id)sender {
    settings *NView = [[settings alloc] initWithNibName:nil bundle:nil];
    [self presentModalViewController:NView animated:YES];

}

- (IBAction)home:(id)sender {
    NSString *filePath = [self dataFilePath]; 
    if ([[NSFileManager defaultManager] fileExistsAtPath:filePath])
    { 
        array = [[NSArray alloc] initWithContentsOfFile:filePath];
    }
    NSString *string = [NSString stringWithString:[array objectAtIndex:0]];
    NSLog(@"%@\n",string);
    [webView loadRequest:[[NSURLRequest alloc] initWithURL:[[NSURL alloc] initWithString:string]]];
}
- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}

@end

Settings //here's the menu where I can change the homepage

.h

#import <UIKit/UIKit.h>
#import "ViewController.h"

@interface settings : UIViewController{
    ViewController *viewCont;
    IBOutlet UITextField *field;

}
-(IBAction)back:(id)sender;
- (IBAction)setHP:(id)sender;

@end

.m


#import "settings.h"
#import "ViewController.h"


@implementation settings

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib

}

- (void)viewDidUnload
{
    field = nil;
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}
-(IBAction)back:(id)sender{
    [self dismissModalViewControllerAnimated:YES];
}

- (IBAction)setHP:(id)sender {

    NSMutableArray *Array = [[NSMutableArray alloc] init];
    [Array addObject:field.text];
    [Array writeToFile:[viewCont dataFilePath] atomically:YES];
    [viewCont.string1 initWithString:@"other" ];
    NSLog(@"%@\n", viewCont.string1);// HERE XCODE SAYS string1 = null!!! WHY?

}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

@end

Так что кто-нибудь знает, что я делаю неправильно?Пожалуйста, помогите мне, я искал в Интернете 4 дня и ничего не нашел!

1 Ответ

1 голос
/ 31 марта 2012

Я не очень хорошо понимаю вашу проблему, но заметил, что вы не инициализируете viewCont в действии setHP:.

попробуйте добавить эту строку:

ViewController *viewCont=[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];

как раз перед

[viewCont.string1 initWithString:@"other" ];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...