按下镜头后xcode崩溃

时间:2016-11-30 11:22:05

标签: xcode project

问题是当我尝试按放大镜(镜头)并且索引转到C而不是C时我有错误。编写的代码如下:

///
//  RBook.h
//  ObjBook
//
//  Created by pan on 24/08/16.
//  Copyright © 2016 pan. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface RBook : NSObject
{
}

@property (nonatomic,assign) int ID;
@property (nonatomic,strong) NSString *ISBN;
@property (nonatomic,strong) NSString *Code;
@property (nonatomic,strong) NSString *RBMDate;
@property (nonatomic,strong) NSString *Category;
@property (nonatomic,strong) NSString *FTitle;
@property (nonatomic,strong) NSString *FSubTitle;
@property (nonatomic,strong) NSString *GTitle;
@property (nonatomic,strong) NSString *GSubTitle;
@property (nonatomic,strong) NSString *Authors;
@property (nonatomic,strong) NSString *Publisher;
@property (nonatomic,strong) NSString *Cover;
@property (nonatomic,strong) NSString *CovPhoto;
@property NSInteger section;



@end



//
//  RBooks.m
//  ObjBook
//
//  Created by pan on 24/08/16.
//  Copyright © 2016 pan. All rights reserved.
//

#import "RBook.h"

@implementation RBook


@synthesize ID;
@synthesize ISBN;
@synthesize Code;
@synthesize RBMDate;
@synthesize Category;
@synthesize FTitle;
@synthesize FSubTitle;
@synthesize GTitle;
@synthesize GSubTitle;
@synthesize Authors;
@synthesize Publisher;
@synthesize Cover;
@synthesize CovPhoto;


-(NSString *) getName
{
    return [NSString stringWithFormat:@"%d %@ %@ %@ %@ %@ %@ %@ %@ %@  %@ %@ %@",self.ID,self.ISBN,self.Code,self.RBMDate,self.Category,self.FTitle,self.FSubTitle,self.GTitle,self.GSubTitle,self.Authors,self.Publisher,self.Cover,self.CovPhoto];

}


@end





//
//  RBooksTableViewController.h
//  MyRBooks
//
//  Created by pan on 30/08/16.
//  Copyright © 2016 pan. All rights reserved.
//

#import <UIKit/UIKit.h>
#import "FMDBDataAccess.h"

@interface RBooksTableViewController : UITableViewController<UISearchBarDelegate , UITableViewDataSource , UITableViewDelegate> {

    NSString *tID;
    NSString *tFTitle;
    NSString *tGTitle;
    NSString *tAuthors;
    NSString *tPublisher;
    NSString *found;
    NSString *from;

}


@property (nonatomic,strong) NSMutableArray *books;
@property (nonatomic,strong) NSMutableArray *filteredbooks;
@property (weak, nonatomic) IBOutlet UISearchBar *mysearchBar;




@property (nonatomic, assign) bool isFiltered;

//-(void) populateBooks;




@end





#import "RBooksTableViewController.h"
#import "RBooksTableViewCell.h"
#import "FMDBDataAccess.h"
#import "BooksDetailsViewController.h"
#import "RBook.h"


@implementation RBooksTableViewController

@synthesize books;
@synthesize filteredbooks;
@synthesize mysearchBar;
@synthesize isFiltered;



- (id)initWithStyle:(UITableViewStyle)style
{
    self = [super initWithStyle:style];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)didReceiveMemoryWarning
{
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];

    // Release any cached data, images, etc that aren't in use.
}

#pragma mark - View lifecycle


- (void)viewDidLoad
{
    [super viewDidLoad];


    mysearchBar.delegate = (id)self;

    tID = @"A/A :";
    tFTitle = @"FOREIGN TITLE :";
    tGTitle = @"GREEK TITLE :";
    tAuthors = @"AUTHORS. :";
    tPublisher = @"PUBLISHERS :";

  //  [self populateBooks];

    self.books = [NSMutableArray arrayWithCapacity:1];

    NSMutableArray *booksTemp;




    //  Get the books array from the database

    self.books = [[NSMutableArray alloc] init];

    FMDBDataAccess *db = [[FMDBDataAccess alloc] init];

    booksTemp = [db getBooks];




    UILocalizedIndexedCollation *indexedCollation =
    [UILocalizedIndexedCollation currentCollation];

    //  Iterate over the products, populating their section number
    for (RBook *therbook in booksTemp) {
        NSInteger section = [indexedCollation sectionForObject:therbook
                                       collationStringSelector:@selector(FTitle)];
        therbook.section = section;

       // NSLog(@" section is %d" , section);
    }

    //  Get the count of the number of sections
    NSInteger sectionCount = [[indexedCollation sectionTitles] count];

 //   NSLog(@" sectionCount is %d" , sectionCount);



    //  Create an array to hold the sub arrays
    NSMutableArray *sectionsArray = [NSMutableArray
                                     arrayWithCapacity:sectionCount];

    // Iterate over each section, creating each sub array
    for (int i=0; i<=sectionCount; i++) {
        NSMutableArray *singleSectionArray = [NSMutableArray
                                              arrayWithCapacity:1];
        [sectionsArray addObject:singleSectionArray];
    }

    // Iterate over the products putting each product into the correct sub-array
    for (RBook *therbook in booksTemp) {
        [(NSMutableArray *)[sectionsArray objectAtIndex:therbook.section]
         addObject:therbook];
    }

    // Iterate over each section array to sort the items in the section
    for (NSMutableArray *singleSectionArray in sectionsArray) {
        // Use the UILocalizedIndexedCollation sortedArrayFromArray: method to
        // sort each array
        NSArray *sortedSection = [indexedCollation
                                  sortedArrayFromArray:singleSectionArray

                                  collationStringSelector:@selector(FTitle)];
        [self.books addObject:sortedSection];


   //     NSLog(@" sortedCollection is %@" , sortedSection);


    }




}







- (void)viewDidUnload

{
    // [self setSearchBar:nil];
    [super viewDidUnload];

}

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
}

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
}

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
}

- (void)viewDidDisappear:(BOOL)animated
{
    [super viewDidDisappear:animated];
}


- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    if (tableView == self.tableView)
    {
        return [books count];
    }
    return 1;
}

NSIndexPath *currentSelection;

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    currentSelection = indexPath;

    [self showDetailsForIndexPath:indexPath];

}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

    int rowCount;
    if(self.isFiltered)
    {
        rowCount = filteredbooks.count;

    } else


        rowCount = [[books objectAtIndex:section] count];


    return rowCount;

}



- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    RBooksTableViewCell *cell = (RBooksTableViewCell *)[self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];


    if (cell == nil)
        cell = [[RBooksTableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];


    RBook* rbook;

     if(isFiltered)


       rbook = [filteredbooks objectAtIndex:[indexPath row]];
      else

  //  rbook = [books objectAtIndex:[indexPath row]];

    rbook = [[books objectAtIndex:[indexPath section]] objectAtIndex:[indexPath row]];

 //   cell.textLabel.font = [UIFont systemFontOfSize: 17.0]; εχουν μπει στο RBooksTableViewCell.m
 //  cell.imageView.bounds = CGRectMake(15,17,80,128); εχουν μπει στο RBooksTableViewCell.m

 // [[cell textLabel] setText:[NSString stringWithFormat:@"%@ %@\r %@ %@ ", tFirstName,customer.firstName,tLastName,customer.lastName]];

    //  cell.IDlabel!.text = "\(books.ID_Lbl)"

      [[cell textLabel] setText:[NSString stringWithFormat:@"%@ %d\r %@ %@\r %@ %@\r %@ %@\r %@ %@",tID,rbook.ID,tFTitle,rbook.FTitle ,tGTitle,rbook.GTitle,tAuthors,rbook.Authors,tPublisher,rbook.Publisher]];




   [[cell imageView] setImage:[UIImage imageNamed:rbook.CovPhoto]];

    return cell;
}



-(void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath

{

    // create our UIImages

    UIImage * defaultBG = [UIImage imageNamed:@"wood1.jpg"];
    UIImage * selectedBG = [UIImage imageNamed:@"marble2.jpg"];

    // Create UIImageView

    UIImageView * defaultBGView = [[UIImageView alloc] initWithImage:defaultBG];

    UIImageView * selectedBGView = [[UIImageView alloc] initWithImage:selectedBG];

    // set the UIImageView

    cell.backgroundColor = [UIColor clearColor];

    cell.backgroundView = defaultBGView;


// change the background for the selectedview

    cell.selectedBackgroundView = selectedBGView;







}





-(void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
{

    [self.tableView resignFirstResponder];

}




#pragma mark - Table view delegate


-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
    if(searchText.length==0)
    {
        isFiltered = FALSE;

    }else
    {
        isFiltered = TRUE;


        filteredbooks = [[NSMutableArray alloc] init];

        for(RBook* rbook in books)
        {




            NSRange ftitleRange = [rbook.FTitle rangeOfString:searchText options:NSCaseInsensitiveSearch];
            NSRange gtitleRange = [rbook.GTitle rangeOfString:searchText options:NSCaseInsensitiveSearch];
            NSRange authorsRange = [rbook.Authors rangeOfString:searchText options:NSCaseInsensitiveSearch];
            NSRange publisherRange = [rbook.Publisher rangeOfString:searchText options:NSCaseInsensitiveSearch];
            if(ftitleRange.location != NSNotFound || gtitleRange.location != NSNotFound || authorsRange.location != NSNotFound || publisherRange.location != NSNotFound )
            {
                [filteredbooks addObject:rbook];


            }
        }
    }

    found = @"THEY FOUND FOR:";
    from = @" / ";



    self.title = [NSString stringWithFormat:@"%@ %@ %lu %@  %lu",found , searchText ,(unsigned long)filteredbooks.count ,from , (unsigned long)books.count];





    [self. tableView reloadData];


}




- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath
{
    [self showDetailsForIndexPath:indexPath];



}





//-(void) populateBooks
//{
//    self.books = [[NSMutableArray alloc] init];
//    
//    FMDBDataAccess *db = [[FMDBDataAccess alloc] init];
//    
//    self.books = [db getBooks];
//}



-(void) showDetailsForIndexPath:(NSIndexPath*)indexPath
{
    [self.mysearchBar resignFirstResponder];
    BooksDetailsViewController* vc = [self.storyboard instantiateViewControllerWithIdentifier:@"BooksDetailsViewController"];
    RBook* rbook;

    if(isFiltered)
    {
        rbook = [filteredbooks objectAtIndex:indexPath.row];
    }
    else
    {
      //  rbook = [books objectAtIndex:indexPath.row];

        rbook = [[books objectAtIndex:[indexPath section]] objectAtIndex:[indexPath row]];

    }

    vc.rbook = rbook;
    [self.navigationController pushViewController:vc animated:true];
}


- (NSString *)tableView:(UITableView *)tableView
titleForHeaderInSection:(NSInteger)section {
    // Make sure that the section will contain some data
    if ([[books objectAtIndex:section] count] > 0) {

        // If it does, get the section title from the
        // UILocalizedIndexedCollation object
        return [[[UILocalizedIndexedCollation currentCollation] sectionTitles]
                objectAtIndex:section];
    }
    return nil;
}

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {

    if (tableView == self.searchDisplayController.searchResultsTableView) {
        return nil;
    } else {
        NSMutableArray *retval = [NSMutableArray arrayWithObject:UITableViewIndexSearch];
        [retval addObjectsFromArray:[[UILocalizedIndexedCollation currentCollation] sectionIndexTitles]];
        return retval;
    }




    }


- (NSInteger)tableView:(UITableView *)tableView
sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index {
        return [[UILocalizedIndexedCollation currentCollation]
            sectionForSectionIndexTitleAtIndex:index];
//}




}


@end

问题出现在RBooksTableViewController.m

0 个答案:

没有答案