• Das kreative Thema des Monats Oktober wird vor allem diejenigen unter Euch besonders ansprechen, denen Do-it-yourself quasi im Blut liegt. Zeigt uns Eure Improvisationskünste oder fotografiert, was andere Leute sich so im Alltag zusammengestrickt haben. --> Zum Mitmachen bitte hier klicken

Global Var in Appdelegate mit NsCoding Objekten

BluyMul

Idared
Registriert
21.06.13
Beiträge
29
Hallo zusammen,

vorab ich bin neu hier im Forum und mit der suche nichts genaues zu meinem Problem Gefunden.

Kurze Erklärung zum Aufbau.

NSCoding Objekte:
1. Main Objekt besteht aus einem MuttableArray
2. Unter Objekt besteht aus einem MuttableArray und 2 int Variablen
3. Unter Objekt besteht aus int Variablen und NSTime Variablen.

Diese werden in einer Load Klasse aufgerufen falls vorhanden aus einer Datei wenn nicht komplett Neu.

Diese Load Klasse ist eine Variable in der AppDelegate.

Nun Möchte ich ein neues Objekt in das erste Array Ablegen über eine Add Methode in der Objekt Klasse.
Der Aufruf habe ich so Unternommen:

[AppDele.loadKlasse.MainObjekt addOneObjekt:Objekt];

AppDele ist ein Marko das wie folgt aufgebaut ist in der AppDelegate.h

#define AppDele \
((AppDelegate *) [UIApplication sharedApplication].delegate)



Das Problem ist das er gar nicht bis zur Methode kommt, er kommt nur bis zur Klasse, aber nicht bis zur Methode.
Also Sprich das Array wird nicht grösser bleibt bei count 0.

Ich steh da gerade so auf'm Schlauch das es wahrscheinlich nur ne Kleinigkeit ist. :-)
Oder die ganze Sache ist von Grund an falsch.

Grüsse BluyMul
 
Hallo lx88, 2 drei zeilen sind gut :-)

ich geb dir mal ein Paar von den Betroffenen:
AppDelegate:
Code:
[COLOR=#D12F1B][COLOR=#78492a]#import [/COLOR]"DataManageClass.h"[/COLOR]
[COLOR=#D12F1B][COLOR=#78492a]#import [/COLOR]"Devis.h"[/COLOR]
[COLOR=#78492A]#define AppDele \[/COLOR]
[COLOR=#78492A]((AppDelegate *) [UIApplication sharedApplication].delegate)[/COLOR]


[COLOR=#703DAA][COLOR=#bb2ca2]@interface[/COLOR][COLOR=#000000] AppDelegate : [/COLOR]UIResponder[COLOR=#000000] <[/COLOR]UIApplicationDelegate[COLOR=#000000]>{[/COLOR][/COLOR]
    [COLOR=#4f8187]loadKlasse[/COLOR] *loadKlasse;   
}


[COLOR=#bb2ca2]@property[/COLOR] ([COLOR=#bb2ca2]strong[/COLOR], [COLOR=#bb2ca2]nonatomic[/COLOR]) [COLOR=#703daa]UIWindow[/COLOR]          *window;
[COLOR=#bb2ca2]@property[/COLOR] ([COLOR=#bb2ca2]strong[/COLOR], [COLOR=#bb2ca2]nonatomic[/COLOR]) loadKlasse        *loadKlasse;
[COLOR=#BB2CA2]@end[/COLOR]


[COLOR=#BB2CA2]@implementation[COLOR=#000000] AppDelegate[/COLOR][/COLOR]
[COLOR=#bb2ca2]@synthesize[/COLOR] loadKlasse;


- ([COLOR=#bb2ca2]BOOL[/COLOR])application:([COLOR=#703daa]UIApplication[/COLOR] *)application didFinishLaunchingWithOptions:([COLOR=#703daa]NSDictionary[/COLOR] *)launchOptions
{
[COLOR=#008400]// Override point for customization after application launch.[/COLOR]
[COLOR=#3D1D81][COLOR=#bb2ca2]if[/COLOR][COLOR=#000000] ([[[/COLOR][COLOR=#703daa]UIDevice[/COLOR]currentDevice[COLOR=#000000]] [/COLOR]userInterfaceIdiom[COLOR=#000000]] == [/COLOR]UIUserInterfaceIdiomPad[COLOR=#000000]) {[/COLOR][/COLOR]
[COLOR=#703DAA]UISplitViewController[COLOR=#000000] *splitViewController = ([/COLOR]UISplitViewController[COLOR=#000000] *)[/COLOR][COLOR=#bb2ca2]self[/COLOR][COLOR=#000000].[/COLOR][COLOR=#4f8187]window[/COLOR][COLOR=#000000].[/COLOR]rootViewController[COLOR=#000000];[/COLOR][/COLOR]
        [COLOR=#703daa]UINavigationController[/COLOR] *navigationController = [splitViewController.[COLOR=#703daa]viewControllers[/COLOR] [COLOR=#3d1d81]lastObject[/COLOR]];
        splitViewController.[COLOR=#703daa]delegate[/COLOR] = ([COLOR=#bb2ca2]id[/COLOR])navigationController.[COLOR=#703daa]topViewController[/COLOR];
    }
    
[COLOR=#008400]//Daten Manag Klasse laden, sodass Sie überall zugänglich ist[/COLOR]
[COLOR=#4F8187]loadKlasse[COLOR=#000000]  = [[[/COLOR]loadKlasse[COLOR=#3d1d81]alloc[/COLOR][COLOR=#000000]][/COLOR][COLOR=#31595d]init[/COLOR][COLOR=#000000]];[/COLOR][/COLOR]
[COLOR=#BB2CA2]returnYES[COLOR=#000000];[/COLOR][/COLOR]
}
loadKLasse:
Code:
[COLOR=#D12F1B][COLOR=#78492a]#import [/COLOR]"MainObjekt.h"[/COLOR]
[COLOR=#bb2ca2]@interface[/COLOR] loadKlasse : [COLOR=#703daa]NSObject[/COLOR]{
     [COLOR=#4f8187]MainObjekt[/COLOR]       *mainObjekt;
}
[COLOR=#BB2CA2]@property[COLOR=#000000] ([/COLOR]nonatomic[COLOR=#000000],[/COLOR]strong[COLOR=#000000]) [/COLOR][COLOR=#4f8187]MainObjekt[/COLOR][COLOR=#000000]   *mainObjekt;[/COLOR][/COLOR]
-([COLOR=#bb2ca2]id[/COLOR])init;
@end


[COLOR=#D12F1B][COLOR=#78492a]#import [/COLOR]"loadKlasse.h"[/COLOR]
[COLOR=#D12F1B][COLOR=#78492a]#import [/COLOR]<Foundation/Foundation.h>[/COLOR]


[COLOR=#BB2CA2]@implementation[COLOR=#000000] loadKlasse[/COLOR][/COLOR]
[COLOR=#bb2ca2]@synthesize[/COLOR] mainObjekt;
-([COLOR=#bb2ca2]id[/COLOR])init{
[COLOR=#008400]//bzw wird spaeter in der app delegate methode geregelt[/COLOR]
    [COLOR=#bb2ca2]self[/COLOR] = [[COLOR=#bb2ca2]super[/COLOR] [COLOR=#3d1d81]init[/COLOR]];
    [COLOR=#bb2ca2]if[/COLOR] ([COLOR=#bb2ca2]self[/COLOR]) {
        mainObjekt = [[MainObjekt [COLOR=#3d1d81]alloc[/COLOR]][COLOR=#3d1d81]init[/COLOR]];
    }
[COLOR=#BB2CA2]returnself[COLOR=#000000];[/COLOR][/COLOR]
}
@end
Das erste MainObjekt:
Code:
[COLOR=#D12F1B][COLOR=#78492a]#import [/COLOR]<Foundation/Foundation.h>[/COLOR]


[COLOR=#D12F1B][COLOR=#78492a]#import [/COLOR]"UnterObjekt1.h"[/COLOR]
[COLOR=#bb2ca2]@interface[/COLOR] MainObjekt : [COLOR=#703daa]NSObject[/COLOR] <[COLOR=#703daa]NSCoding[/COLOR]>{
    [COLOR=#703daa]NSMutableArray[/COLOR]      *objekts;
}
[COLOR=#BB2CA2]@property[COLOR=#000000] ([/COLOR]nonatomic[COLOR=#000000],[/COLOR]strong[COLOR=#000000]) [/COLOR][COLOR=#703daa]NSMutableArray[/COLOR][COLOR=#000000] *objekts;[/COLOR][/COLOR]
-([COLOR=#bb2ca2]void[/COLOR])addobjekts:([COLOR=#703daa]NSSet[/COLOR] *)objects;
-([COLOR=#bb2ca2]void[/COLOR])addOneobjekt:([COLOR=#d12f1b]UnterObjekt1[/COLOR] *)inobjekt;
[COLOR=#BB2CA2]@end[/COLOR]


[COLOR=#D12F1B][COLOR=#78492a]#import [/COLOR]"MainObjekt.h"[/COLOR]
[COLOR=#D12F1B][COLOR=#78492a]#import [/COLOR]"UnterObjekt1.h"[/COLOR]
[COLOR=#D12F1B][COLOR=#78492a]#import [/COLOR]"AppDelegate.h"[/COLOR]
[COLOR=#BB2CA2]@implementation[COLOR=#000000] MainObjekt[/COLOR][/COLOR]
[COLOR=#BB2CA2]@synthesize[COLOR=#000000] objekts;[/COLOR][/COLOR]
-([COLOR=#bb2ca2]id[/COLOR])init{
    [COLOR=#bb2ca2]if[/COLOR] ([COLOR=#bb2ca2]self[/COLOR] = [[COLOR=#bb2ca2]super[/COLOR] [COLOR=#3d1d81]init[/COLOR]])
    {
        objekts = [[[COLOR=#703daa]NSMutableArray[/COLOR] [COLOR=#3d1d81]alloc[/COLOR]][COLOR=#3d1d81]init[/COLOR]];
    }
[COLOR=#BB2CA2]returnself[COLOR=#000000];[/COLOR][/COLOR]
}
-([COLOR=#bb2ca2]id[/COLOR])initWithCoder:([COLOR=#703daa]NSCoder[/COLOR] *)aDecoder{
    [COLOR=#bb2ca2]if[/COLOR] ([COLOR=#bb2ca2]self[/COLOR] = [[COLOR=#bb2ca2]super[/COLOR] [COLOR=#3d1d81]init[/COLOR]]) {
        [COLOR=#bb2ca2]self[/COLOR].objekts = [aDecoder [COLOR=#3d1d81]decodeObjectForKey[/COLOR]:[COLOR=#d12f1b]@"[/COLOR]objekts[COLOR=#d12f1b]"[/COLOR]];
    }
[COLOR=#BB2CA2]returnself[COLOR=#000000];[/COLOR][/COLOR]
}
-([COLOR=#bb2ca2]void[/COLOR])encodeWithCoder:([COLOR=#703daa]NSCoder[/COLOR] *)aCoder{
    [aCoder [COLOR=#3d1d81]encodeObject[/COLOR]:[COLOR=#bb2ca2]self[/COLOR].objekts [COLOR=#3d1d81]forKey[/COLOR]:[COLOR=#d12f1b]@"[/COLOR]objekts[COLOR=#d12f1b]"[/COLOR]];
}
-([COLOR=#bb2ca2]void[/COLOR]) addobjekts:([COLOR=#703daa]NSSet[/COLOR] *)objects{
}
-([COLOR=#bb2ca2]void[/COLOR]) addOneobjekt:([COLOR=#d12f1b]UnterObjekt1[/COLOR] *)inobjekt{
    [objekts [COLOR=#3d1d81]addObject[/COLOR]: inobjekt];
}
[COLOR=#BB2CA2]@end

[/COLOR]

Irgendwo in einem ViewContainer der ne View laed und in der View:
Code:
-([COLOR=#bb2ca2]void[/COLOR])saveEingabenToMainObjekt{
[COLOR=#D12F1B]unterObj1[COLOR=#000000]   = [[[/COLOR]UnterObjekt1[COLOR=#3d1d81]alloc[/COLOR][COLOR=#000000]][/COLOR][COLOR=#3d1d81]init[/COLOR][COLOR=#000000]];[/COLOR][/COLOR]
    [COLOR=#d12f1b]unterObj1[/COLOR].[COLOR=#4f8187]typ[/COLOR] = [COLOR=#4f8187]idTyp[/COLOR];
[COLOR=#4F8187][COLOR=#d12f1b]unterObj1[/COLOR][COLOR=#000000].[/COLOR]Name[COLOR=#000000] = [/COLOR]txtName[COLOR=#000000].[/COLOR][COLOR=#703daa]text[/COLOR][COLOR=#000000];[/COLOR][/COLOR]
[COLOR=#4F8187][COLOR=#000000]    [[/COLOR][COLOR=#78492a]AppDele[/COLOR][COLOR=#000000].[/COLOR]loadKlasse[COLOR=#000000].[/COLOR]mainObjekt[COLOR=#31595d]addOneobjekts[/COLOR][COLOR=#000000]: [/COLOR][COLOR=#d12f1b]unterObj1[/COLOR][COLOR=#000000]];[/COLOR][/COLOR]
}
Und hier bei dem Aufruf über die Appdelegate mit dem Debugger springt er nur bis zum MainObjekt und das wars dann die Methode lässt er vollkommen kalt...

Grüsse BluyMol
 
Zuletzt bearbeitet:
Könntest du evtl. deinen Beitrag bearbeiten und den Code in die "Code-Umgebung" einfügen, ansonsten lässt sich der Code nämlich nur äußerst mühsam lesen, denn die vielen traurigen Smilies schlagen doch aufs Gemüt. ;)

[ CODE ] .... [ /CODE ]

Ohne die Leerzeichen zwischen den Klammern.
 
Nun weint der Source nicht mehr aber das Problem hats damit auch nicht gelöst :-)

Und thx für den Tipp erleichtert nun das Lesen sehr.
 
Nun weint der Source nicht mehr aber das Problem hats damit auch nicht gelöst :-)

Und thx für den Tipp erleichtert nun das Lesen sehr.


Entweder lachen grad alle oder mein Ansatz ist doch richtig nur irgendein voll verheitzes problem ist am tage


p.s Oh Sry dachte hätte bearbeiten gedrückt....
 
Bekommst Du keine Warnungen beim Compilieren? In der Klasse MainObjekt ist die Methode addOneobjekt: implementiert. Aufrufen tust Du aber addOneobjekts:.
Noch ein Tipp: Du solltest bei der Benennung Deiner Klassen, Methoden und Objekte aussagekräftige Begriffe verwenden und Dich an die Namenskonventionen halten. MainObjekt, mainObjekt, UnterObjekt1, unterObj1, objekts, inobjekt. So viele Objekte, dann auch noch schönstes Denglisch. Glaub mir, wenn Du Deinen Code eine Woche nicht anschaust, verstehst Du selbst nicht mehr, was was ist.

MacApple
 
Hey Mac Apple,
danke für deine Antwort.
Nein ich bekommen keinen Compile Fehler aus folgenden gründen:
- Ich habe die Objekte hier für euch umgenannt und da ist woll nen Tippfehler passiert sry, ich habe mich dazu entschlossen weil meine Bezeichnungen ohne den Kompletten Kontex nicht selbsterklärend sind.
Den Ganzen Source wollte ich auch nicht hier posten (ist mittlerweile schon was)
Das es so ein Denglish wurde hier tut mir leid :-) ok die Funktionen habe ich nicht umbenannt sry muss woll nen refactor ran..
Alos Compilieren lässt sich mein Source.
Das Problem besteht aber weiterhin und ich bin atm auch noch nach lösungen zu suchen aber es scheint mir das mein Ansatz richtig ist, sonst hättet ihr da schon längst was dazu gesagt.
Und ich schaue nun wenn ich hier wieder Source poste das ich die Original bezeichnungen nehme und eventuell dazu ne erklärung poste.

Grüsse
 
Status,

Problem Gelöst bin auch Singelton umgestiegen und andere Verfahrensweisse von dem NScoding Handhabung.