2012-03-26 66 views
2

如何从一个委托类传递数组值,以查看控制器类如何从一类传递数组值其他类

const char *query2=[tempQuery UTF8String]; 
NSMutableArray *arr1 = [[NSMutableArray alloc]init];; 
if (sqlite3_prepare_v2(database,query2,-1,&statement1,NULL)==SQLITE_OK) { 
    //NSLog(@"vt", vt); 

    while (sqlite3_step(statement1)==SQLITE_ROW) { 
     vt=[[[Question1 alloc]init]autorelease]; 
     vt.question=[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement1,3)]; 
     [arr1 addObject:vt.question]; 
     NSLog(@"arr1 is %@",[arr1 description]); 

凡ARR1是一个数组值。所以这个数组的值必须通过另一个类。

在此先感谢。

+0

你有没有做过这方面的研究?阅读developer.apple.com? – 2012-03-26 06:00:28

+0

@ user801222:参考我的答案。这正是你想要的。让我知道,如果你需要更多的帮助。 – 2012-03-26 06:17:08

回答

0

在你想通过这个“ARR1”数组类做以下步骤: 1)定义了一个数组有(可以说是aryTest) 2)使属性,这 3)合成它

现在您可以看到这个“arr1”数组。 从这个观点时,无论你编写代码来推到下一个视图做以下步骤:

NextViewController *objVc = [[NextViewController alloc] initWithNibName:@"NextViewController" bundle:nil]; 
objVc.aryTest = arr1; 
[self.navigationController pushViewController:vc animated:YES]; 
[vc release]; 

所以这个你会得到这个ARR1阵列到阵列aryTest下一个视图。

0

可以使用NSUserDefault方法传递NSStringNSMutableArray ... NSUserDefaultExampleSaving/Retrieving Data Using NSUserDefaults

对于保存

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 

// saving an NSString 
[prefs setObject:@"TextToSave" forKey:@"keyToLookupString"]; 

// saving an NSInteger 
[prefs setInteger:42 forKey:@"integerKey"]; 

// saving a Double 
[prefs setDouble:3.1415 forKey:@"doubleKey"]; 

// saving a Float 
[prefs setFloat:1.2345678 forKey:@"floatKey"]; 

    // saving an array 
    NSData *data = [NSKeyedArchiver archivedDataWithRootObject:array]; 
    [prefs setObject:data forKey:@"lastResults"] 

// This is suggested to synch prefs, but is not needed (I didn't put it in my tut) 
[prefs synchronize]; 

检索

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 

// getting an NSString 
NSString *myString = [prefs stringForKey:@"keyToLookupString"]; 

// getting an NSInteger 
NSInteger myInt = [prefs integerForKey:@"integerKey"]; 

// getting an Float 
float myFloat = [prefs floatForKey:@"floatKey"]; 

// getting an array 
NSData *dataRepresentingSavedArray = [prefs objectForKey:@"lastResults"]; 
if (dataRepresentingSavedArray != nil) 
{ 
    NSArray *oldSavedArray = [NSKeyedUnarchiver unarchiveObjectWithData:dataRepresentingSavedArray]; 
    if (oldSavedArray != nil) 
      objectArray = [[NSMutableArray alloc] initWithArray:oldSavedArray]; 
    else 
      objectArray = [[NSMutableArray alloc] init]; 
} 

filename *detailViewController = [[filename alloc] initWithNibName:@"filename" bundle:nil]; 
[email protected]"yourData"; 
[self presentModalViewController:detailViewController animated:YES]; 
[detailViewController release]; 

申报filename.h

NSArray *audio; 

@property(nonatomic,retain) NSArray *audio; 

和filename.m

@synthesize audio; 

多数民众赞成。

0

只需在您的视图控制器创建阵列方法就像+(NSMutableArray的*)的getData在委托类

+(NSMutableArray *)getData 
{ 
const char *query2=[tempQuery UTF8String]; 
NSMutableArray *arr1 = [[NSMutableArray alloc]init];; 
if (sqlite3_prepare_v2(database,query2,-1,&statement1,NULL)==SQLITE_OK) { 
    //NSLog(@"vt", vt); 

    while (sqlite3_step(statement1)==SQLITE_ROW) { 

     [arr1 addObject:[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement1,3)]]; 
     NSLog(@"arr1 is %@",[arr1 description]); 
} 
} 
return [arr1 autorelease]; 
} 

只需调用像

NSMutableArray * data=[[delegate getData]retain]; 
0

的方法可以尝试创建数组在你的appDelegate。因此,它可以在任何视图控制器通过调用你的appDelegate访问:

myAppDelegate *myDelegate = (myAppDelegate *)[[UIApplication sharedApplication] delegate]; 
arrayInView = [myDelegate msgFilter]; 
相关问题