【问题标题】:How to pass array value from one class to other class如何将数组值从一个类传递到另一类
【发布时间】:2012-03-26 05:46:29
【问题描述】:

如何将一个数组值从委托类传递给视图控制器类

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 是一个数组值。所以这个数组值必须传入另一个类。

提前致谢。

【问题讨论】:

  • 您对此进行过研究吗?阅读 developer.apple.com?
  • @user801222:参考我的回答。这正是你想要的。如果您需要更多帮助,请告诉我。

标签: iphone


【解决方案1】:

在要传递此“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 数组的下一个视图中。

【讨论】:

    【解决方案2】:

    只需在委托类中创建一个 Array 方法,例如 +(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];
    

    【讨论】:

      【解决方案3】:

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

      myAppDelegate *myDelegate = (myAppDelegate *)[[UIApplication sharedApplication] delegate];
      arrayInView = [myDelegate msgFilter];
      

      【讨论】:

        【解决方案4】:

        您可以使用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];
        detailViewController.audio=@"yourData";
        [self presentModalViewController:detailViewController animated:YES];
        [detailViewController release];
        

        在文件名.h 中声明

         NSArray *audio;
        
         @property(nonatomic,retain) NSArray *audio;
        

        和文件名.m

         @synthesize audio;
        

        仅此而已。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-03-16
          • 1970-01-01
          • 1970-01-01
          • 2011-08-26
          • 2017-10-30
          • 1970-01-01
          • 2019-10-15
          相关资源
          最近更新 更多