Halloweenská akce! Na stránce s dobitím bodů zadej dole kód STRASIDELNYCH20 a získej porci +20% bodů zdarma!
Akce končí 31.10. o půlnoci.

Diskuze: Prečo tento kód v Objective C nefunguje ak nehlási chybu?

Ostatní jazyky Ostatní programovací jazyky Prečo tento kód v Objective C nefunguje ak nehlási chybu?

Aktivity (1)
Avatar
3012
Člen
Avatar
3012:6. června 10:36

Dobrý ďeň, tieto kódy fungovali, a bez toho aby som ich upravil, po preinštalovaní xcode fungovať prestali

ViewController.h:
//
// ViewController.h
// remember
//
// Created by Michal Mihalik on 22.5.18.
// Copyright © 2018 Michal Mihalik. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController{
NSMutableArray *spomienky;
}

//ovladacie prvky hlavnej stranky
@property (weak, nonatomic) IBOutlet UITextField *datumPole;
@property (weak, nonatomic) IBOutlet UITextView *poznamkaPole;
@property (weak, nonatomic) IBOutlet UITextField *stranaPole;

  • (IBAction)uloz­Tlacidlo:(id)sen­der;
  • (IBAction)vzad­Tlacidlo:(id)sen­der; // znak na tlacidle: <
  • (IBAction)vpred­Tlacidlo:(id)sen­der; // znak na tlacidle: >
  • (IBAction)skoc­Tlacidlo:(id)sen­der;
  • (IBAction)vymaz­Tlacidlo:(id)sen­der;

//ovladacie prvky nova spomienka
@property (weak, nonatomic) IBOutlet UITextField *novyDatumPole;
@property (weak, nonatomic) IBOutlet UITextView *novaPoznamkaPole;

  • (IBAction)uloz­NovuTlacitlo:(id)sen­der;

@end

ViewController.m:

//
//  ViewController.m
//  remember
//
//  Created by Michal Mihalik on 22.5.18.
//  Copyright © 2018 Michal Mihalik. All rights reserved.
//

#import "ViewController.h"
#import "spomienka.h"

@interface ViewController ()

@end

@implementation ViewController

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

    [self nastavit];
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


-(void)nastavit{
    spomienky = [[NSMutableArray alloc]init];


    NSUserDefaults *ulozeneSpomienky = [NSUserDefaults standardUserDefaults];

    NSMutableArray *nacitaneSpomienky = [NSKeyedUnarchiver unarchiveObjectWithData:[ulozeneSpomienky objectForKey:@"spomienky"]];
    spomienky = nacitaneSpomienky;
}


- (IBAction)ulozTlacidlo:(id)sender {

    [self nastavit];

    //načítanie z ovladacích prvkov
    NSString *datum = _datumPole.text;
    NSString *poznamka = _poznamkaPole.text;

    NSString *strana = _stranaPole.text;
    int cisloStrany = [strana intValue]; //pretypovanie

    spomienka *novaSpomienka = [[spomienka alloc]init];

    [novaSpomienka nacitaj:datum aPoznamka:poznamka];

    _poznamkaPole.text = [novaSpomienka vratPoznamka];
    _datumPole.text = [novaSpomienka vratDatum];

    int indexPoznamky = cisloStrany - 1;

    [spomienky replaceObjectAtIndex:indexPoznamky withObject:novaSpomienka];

    //ulozenie spomienky
    NSData *dataSpomienky = [NSKeyedArchiver archivedDataWithRootObject:spomienky];
    NSUserDefaults *ulozeneSpomienky = [NSUserDefaults standardUserDefaults];

    [ulozeneSpomienky setObject:dataSpomienky forKey:@"spomienky"];

}

- (IBAction)vzadTlacidlo:(id)sender {

    [self nastavit];

    //načítanie z ovladacích prvkov
    NSString *strana = _stranaPole.text;
    int cisloStrany = [strana intValue]; //pretypovanie

    //
    int indexSpomienky = cisloStrany - 1 - 1;
    spomienka *skocSpomienka = spomienky[indexSpomienky];

    _datumPole.text = [skocSpomienka vratDatum];
    _poznamkaPole.text = [skocSpomienka vratPoznamka];

    cisloStrany = cisloStrany - 1;
    _stranaPole.text = [NSString stringWithFormat:@"%i", cisloStrany];
}

- (IBAction)vpredTlacidlo:(id)sender {

    [self nastavit];

    //načítanie z ovladacích prvkov
    NSString *strana = _stranaPole.text;
    int cisloStrany = [strana intValue]; //pretypovanie

    //
    int indexSpomienky = cisloStrany - 1 + 1;
    spomienka *skocSpomienka = spomienky[indexSpomienky];

    _datumPole.text = [skocSpomienka vratDatum];
    _poznamkaPole.text = [skocSpomienka vratPoznamka];

    cisloStrany = cisloStrany + 1;
    _stranaPole.text = [NSString stringWithFormat:@"%i", cisloStrany];
}

- (IBAction)skocTlacidlo:(id)sender {

    [self nastavit];

    //načítanie z ovladacích prvkov
    NSString *strana = _stranaPole.text;
    int cisloStrany = [strana intValue]; //pretypovanie

    //
    int indexSpomienky = cisloStrany - 1;
    spomienka *skocSpomienka = spomienky[indexSpomienky];

    _datumPole.text = [skocSpomienka vratDatum];
    _poznamkaPole.text = [skocSpomienka vratPoznamka];

}

- (IBAction)vymazTlacidlo:(id)sender {

    [self nastavit];

    //načítanie z ovladacích prvkov
    NSString *strana = _stranaPole.text;
    int cisloStrany = [strana intValue]; //pretypovanie

    _poznamkaPole.text = @"removed";
    _datumPole.text = @"removed";

    int indexPoznamky = cisloStrany - 1;

    [spomienky removeObjectAtIndex:indexPoznamky];

    //ulozenie spomienky
    NSData *dataSpomienky = [NSKeyedArchiver archivedDataWithRootObject:spomienky];
    NSUserDefaults *ulozeneSpomienky = [NSUserDefaults standardUserDefaults];

    [ulozeneSpomienky setObject:dataSpomienky forKey:@"spomienky"];

}


//stranka: nová poznámka
- (IBAction)ulozNovuTlacitlo:(id)sender {

   //načítanie z ovladacích prvkov
    NSString *novyDatum = _novyDatumPole.text;
    NSString *novaPoznamka = _novaPoznamkaPole.text;

    spomienka *novaSpomienka = [[spomienka alloc]init];

    [novaSpomienka nacitaj:novyDatum aPoznamka:novaPoznamka];

    [spomienky addObject:novaSpomienka];

    //ciklus testuje funkčnost pola
    for (spomienka *citanaSpomienka in spomienky){
        [citanaSpomienka zobrazSpomienku];
    }

    //ulozenie spomienky
    NSData *dataSpomienky = [NSKeyedArchiver archivedDataWithRootObject:spomienky];
    NSUserDefaults *ulozeneSpomienky = [NSUserDefaults standardUserDefaults];

    [ulozeneSpomienky setObject:dataSpomienky forKey:@"spomienky"];

    //nacitanie spomienky
    NSMutableArray *nacitaneSpomienky = [NSKeyedUnarchiver unarchiveObjectWithData:[ulozeneSpomienky objectForKey:@"spomienky"]];

    spomienky = nacitaneSpomienky;

    //zmaže obsah polí, a pripravý ich pre dalšiu poznámku
    _novyDatumPole.text = @"";
    _novaPoznamkaPole.text = @"";

}

@end

spomienka.h:

//
//  spomienka.h
//  remember
//
//  Created by Michal Mihalik on 22.5.18.
//  Copyright © 2018 Michal Mihalik. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface spomienka : NSObject <NSCoding>//ošetenie protokolu NSCoding
{
    NSString *spomienkaDatum;
    NSString *spomienkaPoznamka;
}

-(void)nacitaj: (NSString *)datum
       aPoznamka: (NSString *)poznamka;

-(void)zobrazSpomienku;

-(NSString *)vratDatum;
-(NSString *)vratPoznamka;

@end

spomienka.m:

//
//  spomienka.m
//  remember
//
//  Created by Michal Mihalik on 22.5.18.
//  Copyright © 2018 Michal Mihalik. All rights reserved.
//

#import "spomienka.h"

#define datumKey @"datum"
#define poznamkaKey @"poznamka"

@implementation spomienka

-(void)nacitaj: (NSString *)datum
     aPoznamka: (NSString *)poznamka
{
    spomienkaDatum = datum;
    spomienkaPoznamka = poznamka;
}

-(void)zobrazSpomienku
{
    NSLog(@"%@ %@", spomienkaDatum, spomienkaPoznamka);
}

-(NSString *)vratDatum
{
    return [NSString stringWithFormat:@"%@", spomienkaDatum];
}

-(NSString *)vratPoznamka
{
    return [NSString stringWithFormat:@"%@", spomienkaPoznamka];
}

//ošetenie protokolu NSCoding
- (void)encodeWithCoder:(NSCoder *)encoder {
    [encoder encodeObject: spomienkaDatum forKey: datumKey];
    [encoder encodeObject: spomienkaPoznamka forKey: poznamkaKey];
}
//ošetenie protokolu NSCoding
- (id)initWithCoder:(NSCoder *)decoder {
    if (self = [super init]) {
        self->spomienkaDatum = [decoder decodeObjectForKey: datumKey];
        self->spomienkaPoznamka = [decoder decodeObjectForKey: poznamkaKey];
    }
    return self;
}

@end

Neviete mi prosím poradiť, prečo mohly prestať fungovať, nefunguje totiž kazdá verzia programu pracujúca sNSuserDefaults, program očividne nezapysuje a nečíta s NSuser ale pred tým fungoval
ďakujem

 
Odpovědět 6. června 10:36
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 1 zpráv z 1.