2012-04-11 100 views
-1

我有一個名爲array的自定義對象數組,它存儲了一堆核心數據。我使用這個數組填充我的UITableView並創建單元格。然後,我嘗試在UISearch打開時使用相同的數組,但此時數組爲空,我如何保留數組中的對象?如何在NSMutableArray中保留對象IOS5

編輯

好吧,這裏是我的一些代碼

我.h文件中

@interface SelectCourses : UIViewController <DataHandlerDelegate, UITableViewDataSource, UITableViewDelegate, UITableViewDataSource> { 
DataHandler *dataHandler; 
NSMutableArray *courses; 
IBOutlet UITableView *table; 
IBOutlet UISearchBar *searchFilter; 
//NSMutableArray *filteredCourses; 
BOOL isFiltered; 
} 

@property (retain) NSMutableArray* filteredCourses; 

然後我.m文件,我已經離開了幾個功能,我相信是無關

@implementation SelectCourses 

@synthesize Delegate; 
@synthesize filteredCourses; 
... 
... 

- (void) dataHandlerHasLoadedCourseData:(NSMutableArray *)courseData { 
courses = courseData; 
[table reloadData]; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
if(isFiltered){ 
    return filteredCourses.count; 
} 
if (courses) { 
    NSLog(@"Count: %i", [courses count]); 
    if (courses.count == 1) { 
     return 0; 
    } 
    return [courses count]; 
} 
else 
    return 0; 
} 
... 
... 
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchFiltert { 
NSLog(@"searchBarSearchButtonClicked");//More debugging 

if(searchFilter.text.length == 0) 
{ 
    isFiltered = FALSE; 
} 
else 
{ 
    NSLog(@"%@", [NSString stringWithFormat:searchFilter.text]); 
    isFiltered = true; 


    for (Course *course in courses) 
    { 
     NSRange codeRange = [course.Code rangeOfString:searchFilter.text options:NSCaseInsensitiveSearch]; 
     NSRange nameRange = [course.Name rangeOfString:searchFilter.text options:NSCaseInsensitiveSearch]; 
     if(codeRange.location != NSNotFound || nameRange.location != NSNotFound) 
     { 
      [filteredCourses addObject:course]; 
     } 
    } 
} 
[table reloadData]; 
} 

我仍然得到運行該腳本時,下面的錯誤,我只是認爲這是由於數組爲空

2012-04-11 20:54:23.067 scheduleTable[45885:fb03] -[__NSArrayM Code]: unrecognized selector sent to instance 0x897b360 
2012-04-11 20:54:23.068 scheduleTable[45885:fb03] *** WebKit discarded an uncaught exception in the webView:shouldInsertText:replacingDOMRange:givenAction: delegate: <NSInvalidArgumentException>  -[__NSArrayM Code]: unrecognized selector sent to instance 0x897b360 

我course.h和.M看起來像這樣

#import <Foundation/Foundation.h> 
#import <CoreData/CoreData.h> 

@class Post; 

@interface Course : NSManagedObject 

@property (nonatomic, retain) NSString *Code; 
@property (nonatomic, retain) NSString *Name; 
@end 

#import "Course.h" 
#import "Post.h" 

@implementation Course 

@synthesize Code; 
@synthesize Name; 
@end 
+1

當你把對象變成他們保留一個NSMutableArray你應該張貼一些代碼 – nielsbot 2012-04-11 02:48:42

+2

。 – 2012-04-11 03:30:14

回答

0

我使用保留方法,歐樂B的回答,但它讓我無處試過,我有點新手到目標C是爲什麼我有這些問題。

我的課程數組是在一個接口中聲明的,而且我無法實現與我剛剛爲搜索創建的新數組一樣的結果。因此,在viewDidLoad中我做到這一點

coursesForSearch = [[NSMutableArray alloc] init]; 

又在哪裏對象添加到我的其他數組我只是添加了此陣,也加入對象添加到其中。

現在我可以從陣列中得到的對象,像這樣

[[coursesForSearch objectAtIndex:500] objectAtIndex:0]); 
0

如果我正確理解你的問題,爲了保留你的陣列,在.h文件中聲明數組,如下所示: @property (retain) NSMutableArray *yourArrayName;

然後合成它在你的.m文件,如: @synthesize yourArrayName;