NSMutableArray

来源:互联网 发布:木星探测器朱诺知乎 编辑:程序博客网 时间:2024/03/28 22:24
Hello guys, I'm trying to save a NSMutableArray and I can't get the encoding to work..

I have this function that loads stuff from the internet:
Code:
- (void)downloadData {NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init];NSURL *jsonUrl = [NSURL URLWithString:@"blabla"];NSURLRequest *urlRequest = [NSURLRequest requestWithURL:jsonUrlcachePolicy:NSURLRequestReturnCacheDataElseLoadtimeoutInterval:30];NSData *urlData;NSURLResponse *response;NSError *error;urlData = [NSURLConnection sendSynchronousRequest:urlRequestreturningResponse:&responseerror:&error];SBJSON *jsonParser = [SBJSON new];NSString *jsonString =  [[[NSString alloc] initWithData:urlData encoding:NSUTF8StringEncoding]autorelease];NSArray *result = [jsonParser objectWithString:jsonString error:NULL];NSInteger aantalvragen = result.count;aVragen = [[NSMutableArray alloc] initWithCapacity:aantalvragen];for(int i = 0; i < aantalvragen; i++){NSDictionary *stream = (NSDictionary *)[result objectAtIndex:i];vragen *v = [[[vragen alloc] initWithName:[stream valueForKey:@"vraagid"] Vraag:[stream valueForKey:@"vraag"] Antwoord:[stream valueForKey:@"antwoord"] Uitleg:[stream valueForKey:@"uitleg"] Vraagtype:[stream valueForKey:@"vraagtype"]]autorelease];[aVragen addObject:v];}[jsonParser release];[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;[self performSelectorOnMainThread:@selector(slaVragenOp) withObject:nil waitUntilDone:NO];[pool release];}
The slaVragenOp function:
Code:
- (void)slaVragenOp {vragenLijst = [NSUserDefaults standardUserDefaults];dataVragenLijst = [NSKeyedArchiver archivedDataWithRootObject:aVragen];[vragenLijst setObject:dataVragenLijst forKey:@"vragenlijst"];[vragenLijst synchronize];[self performSelectorOnMainThread:@selector(opgeslagen) withObject:nil waitUntilDone:NO];}
The opgeslagen function:
Code:
- (void)opgeslagen {vragenLijst = [NSUserDefaults standardUserDefaults];aVragen = [NSKeyedUnarchiver unarchiveObjectWithData:dataVragenLijst];}
This all gets called with a button:
Code:
- (IBAction)startPressed {[self performSelectorOnMainThread:@selector(downloadData) withObject:nil waitUntilDone:NO];}
I get an "unknown selector sent" error, saying that "vragen" is unrecognized..

I have vragen.h and vragen.m, they look like this:

vragen.h
Code:
#import <Foundation/Foundation.h>@interface vragen : NSObject {NSDecimalNumber *VraagID;NSString *Vraag;NSString *Antwoord;NSString *Uitleg;NSString *Vraagtype;}@property (nonatomic, retain) NSDecimalNumber *VraagID;@property (nonatomic, retain) NSString *Vraag;@property (nonatomic, retain) NSString *Antwoord;@property (nonatomic, retain) NSString *Uitleg;@property (nonatomic, retain) NSString *Vraagtype;-(id)initWithName:(NSDecimalNumber *)n Vraag:(NSString *)vraag Antwoord:(NSString *)antwoord Uitleg:(NSString *)uitleg Vraagtype:(NSString *)vraagtype;@end
vragen.m
Code:
#import "vragen.h"@implementation vragen@synthesize VraagID, Vraag, Antwoord, Uitleg, Vraagtype;-(id)initWithName:(NSDecimalNumber *)n Vraag:(NSString *)vraag Antwoord:(NSString *)antwoord Uitleg:(NSString *)uitleg Vraagtype:(NSString *)vraagtype{self.VraagID = n;self.Vraag = vraag;self.Antwoord = antwoord;self.Uitleg = uitleg;self.Vraagtype = vraagtype;return self;}@end
How do I need to define what vragen is? How do I get this to work with these methods:

Code:
- (void)encodeWithCoder:(NSCoder *)encoder {[encoder encodeObject:aVragen forKey:@"vraagid"];[encoder encodeObject:aVragen forKey:@"vraag"];[encoder encodeObject:aVragen forKey:@"antwoord"];[encoder encodeObject:aVragen forKey:@"uitleg"];[encoder encodeObject:aVragen forKey:@"vraagtype"];}- (id)initWithCoder:(NSCoder *)decoder {aVragen = [[decoder decodeDataObject] retain];return self;}
Regards,

Rick
 
http://www.iphonedevsdk.com/forum/iphone-sdk-development/57042-nskeyedarchiver-nsmutablearray.html
原创粉丝点击