Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,028

HOME > Mobile > Mobile Forum > [iOS] ผมทำแอพ Dictionary พบปัญหาขั้นตอนการ Search ข้อมูลที่ได้มาไม่ตรงกัน มีโค้ดด้านในครับ



 

[iOS] ผมทำแอพ Dictionary พบปัญหาขั้นตอนการ Search ข้อมูลที่ได้มาไม่ตรงกัน มีโค้ดด้านในครับ

 



Topic : 091578



โพสกระทู้ ( 31 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook



สวัสดีทุกท่านครับ

ผมกำลังทำแอพดิคชันนารี โดยใช้ SQLite เป็น Database น่ะครับ ลักษณะคร่าวๆคือ
มี MasterView : tableview ทำงานเป็น Navigation เวลาTAPบนคำศัพท์ มันจะ NAV ไปหน้า DetailView

ณ ตอนนี้ผมสามารถทำการค้นหาได้แล้วครับ แต่ปัญหาคือว่า

ตอนค้นหาน่ะ มันก็ตรงนะครับ แต่พอ TAP ปุ้บ ความหมายที่ได้มากลับกลายเป็น ความหมายแรกที่ปรากฏใน TableView น่ะครับ และหากค้นหาเจอ 2 คำ พอ TAP บรรทัดที่ 2 มันก็จะเป็นความหมายของคำที่ 2 ใน TableView เดิมน่ะครับ



Code (Objective-C)
//
//  MasterViewController1.m
//  iTechDictionary
//
//  Created by MITR RAIPUTTA on 27/2/2556.
//  Copyright (c) พ.ศ. 2556 MITR2009. All rights reserved.
//

#import "MasterViewController1.h"

@interface MasterViewController1 ()

@end

@implementation MasterViewController1

@synthesize words,detail,filteredwords;





-(NSArray*) filteredWordsForSearchScope:(NSUInteger)scopeID
{
    NSPredicate *predicate;
    NSString *searchString = self.searchDisplayController.searchBar.text;
    switch (scopeID) {
        case 0:
            predicate = [NSPredicate predicateWithFormat:@"SELF beginswith[c] %@",searchString];
            break;
        case 1:
            predicate = [NSPredicate predicateWithFormat:@"SELF contains[c] %@",searchString];
            break;
        default:
            break;
    }
    return [self.words filteredArrayUsingPredicate:predicate];
}

-(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString
{
    NSInteger scopeID = controller.searchBar.selectedScopeButtonIndex;
    self.filteredwords = [self filteredWordsForSearchScope:scopeID];
    
    return YES;
}

-(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchScope:(NSInteger)searchOption
{
    self.filteredwords = [self filteredWordsForSearchScope:searchOption];
    
    return YES;
    
}

-(NSArray *)arrayForTableView:(UITableView *)tableView
{
    if (tableView == self.searchDisplayController.searchResultsTableView)
    {
        return self.filteredwords;
    }else{
        return self.words;
    }
}


-(NSString *)filePath
{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    return [[paths objectAtIndex:0] stringByAppendingPathComponent:@"DICTIONARY.db"];
}

-(void)openDB
{
    if (sqlite3_open([[self filePath] UTF8String],&db) != SQLITE_OK)
    {
        sqlite3_close(db);
        NSAssert(0,@"Database failed to open");
    }else{
        NSLog(@"database opend");
    }
}



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

- (void)viewDidLoad
{
    
    
    self.title = @"iTech General Programmer";
    words = [[NSMutableArray alloc]init];
    detail = [[NSMutableArray alloc]init];
    [self openDB];
    
    NSString *sql = [NSString stringWithFormat:@"SELECT * FROM generals"];
    sqlite3_stmt *statement;
    
    if(sqlite3_prepare_v2(db, [sql UTF8String], -1 , &statement, nil) == SQLITE_OK)
    {
        while (sqlite3_step(statement) == SQLITE_ROW) {
            char *field1 = (char *) sqlite3_column_text(statement, 1);
            NSString *field1Str = [[NSString alloc]initWithUTF8String:field1];
            
            char *field2 = (char *) sqlite3_column_text(statement, 2);
            NSString *field2Str = [[NSString alloc]initWithUTF8String:field2];
            
            NSString *str = [[NSString alloc]initWithFormat:@"%@", field1Str];
            NSString *str1 = [[NSString alloc]initWithFormat:@"%@",field2Str];
            
            
            [words addObject:str];
            [detail addObject:str1];
            
        }
    }
    
    
    [super viewDidLoad];
    
}
- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [[self arrayForTableView:tableView]count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    
    static NSString *CellIdentifier = @"Cell";
    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
   
    if(cell == nil)
    {
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    }
    cell.textLabel.text = [[self arrayForTableView:tableView] objectAtIndex:indexPath.row];
    
    return cell;
    
}


- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
        DetailViewController1 *detailViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"DetailViewController1"];

        NSIndexPath *path = [self.tableView indexPathForSelectedRow];
       
    
        if([self.searchDisplayController isActive])
        {
            path = [self.searchDisplayController.searchResultsTableView indexPathForSelectedRow];
            detailViewController.wordDetail = [self.filteredwords objectAtIndex:path.row];
            detailViewController.detailDetail = [self.detail objectAtIndex:indexPath.row];
        มันน่าจะผิดแถวๆบรรทัดนี้น่ะครับ แต่ผมไปต่อไม่ถูกแล้ว หรือจะให้เปลี่ยนทิศทางโค้ดก็ได้ครับ ขอแค่มันถูกก็พอ
        
        }else{
            detailViewController.wordDetail = [words objectAtIndex:indexPath.row];
            detailViewController.detailDetail = [detail objectAtIndex:path.row];
        }
    [self.navigationController pushViewController:detailViewController animated:YES];    

}

@end





Tag : Mobile, iOS, iPhone, Objective-C







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2013-02-28 07:16:27 By : mitr2009 View : 1351 Reply : 8
 

 

No. 1



โพสกระทู้ ( 31 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

มันติดตรงช่วงประมาณบรรทัดที่ 177 อะครับ ผมไปต่อไม่ถูกแล้ว

TAP คำศัพท์โดยไม่พึ่ง UISearchDisplayController ไม่มีปัญหาครับ แสดงผลลัพท์ได้ถูกต้อง แต่พอใช้เจ้าเสิร์ทเท่านั้นแหละ ป่วนเลย

ขอไอเดียหน่อยครับ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-02-28 07:21:01 By : mitr2009
 


 

No. 2



โพสกระทู้ ( 31 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

ผมอาศัย UILabel ในการแสดงความหมายของศัพท์ในหน้า DetailView นะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-02-28 07:22:15 By : mitr2009
 

 

No. 3



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

ลอง Capture หน้าจอมาให้ผมดูหน่อยครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-02-28 09:56:19 By : mr.win
 


 

No. 4



โพสกระทู้ ( 31 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

นี้คือหน้าแรกนะครับ สังเกตุตำแหน่งของคำศัพท์
คบิกตำแหน่งแรก โดยไม่ใช้ Search ความหมายถูกครับ
คลิกคำศัพท์ที่สอง ก็แสดงความหมายถูกครับ (ไม่ใช้Search)
ภาพนี้เกิดจากการใช้ Search ครับ ปกติจะอยู่ตำแหน่งที่ 3 แต่สังเกตุความหมายครับ
ผลลัพธ์ออกมาเป็นความหมายของคลาสซะงั้น
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-02-28 16:58:49 By : mitr2009
 


 

No. 5



โพสกระทู้ ( 31 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

อันนี้กรณีเจอ2ศัพท์ ผมเลือกอันที่2
ผลลัพธ์เป็นความหมายของ website ตำแหน่งที่ 2 แบบไม่ใช้Search
ครับผม
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-02-28 17:01:40 By : mitr2009
 


 

No. 6



โพสกระทู้ ( 31 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

หน้าตา StoryBoard ครับ ออกแบบมาแบบนี้
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-02-28 17:03:34 By : mitr2009
 


 

No. 7



โพสกระทู้ ( 31 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

ต้องการโค้ดแบบเต็มๆไหมครับ เด่วโพสให้
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-03-01 14:41:42 By : mitr2009
 


 

No. 8



โพสกระทู้ ( 31 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

รู้สึกว่า Core Data จะตอบสนอง App นี้ได้ดีกว่านะครับ คงต้องศึกษาใหม่แล้ว จะทันไหมว๊าอีก 7 วัน พระเจ้า !!
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-03-01 18:21:03 By : mitr2009
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : [iOS] ผมทำแอพ Dictionary พบปัญหาขั้นตอนการ Search ข้อมูลที่ได้มาไม่ตรงกัน มีโค้ดด้านในครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 03
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่