Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

swift ve parse


xlaidehlevar

Öne çıkan mesajlar

sorunum şu, search bardan birşey aratınca hiçbir sonuç çıkmaması. Herhangi bir error vs yok. Tableview normal olarak gayet güzel çalışıyor datalar refresh ile güncelleniyor ama search kesinlikle çalışmıyor. Birşeyi atlıyorum fakat bulamadım.. teşekkürler.
Not: Kodların gereksiz yerlerini dahi gönderiyorum..

import UIKit
import ParseUI
import Parse
import CoreSpotlight
import MobileCoreServices

let uniqueIdentifier = "com.my.bundle"
let domainIdentifier = "searchapis"

class parseTableViewController: PFQueryTableViewController, UISearchBarDelegate {

let backgroundImage = UIImage(named: "A.png")
var arka: UIImageView!

var activity: NSUserActivity!

var arama = []


@IBOutlet weak var searchBar: UISearchBar!

override func viewDidLoad() {
super.viewDidLoad()

arka = UIImageView(frame: view.bounds)
arka.contentMode = .ScaleToFill
arka.clipsToBounds = true
arka.image = backgroundImage
arka.center = view.center
view.addSubview(arka)
self.view.sendSubviewToBack(arka)

tableView.backgroundView = arka

self.addEffect()

}
override init(style: UITableViewStyle, className: String!) {
super.init(style: style, className: className)
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!

self.parseClassName = "myClassName"
self.textKey = "myColoumnName"
self.pullToRefreshEnabled = true
self.paginationEnabled = false
}


override func queryForTable() -> PFQuery {
var query = PFQuery(className: "myClassName")
if searchBar.text != "" {
query.whereKey("searchText", containsString: searchBar.text!.lowercaseString)
}
query.cachePolicy = .CacheThenNetwork
query.orderByAscending("myColoumnName")
query.limit = 1000
return query
}

func searchBarTextDidEndEditing(searchBar: UISearchBar) {

// Dismiss the keyboard
searchBar.resignFirstResponder()

// Force reload of table data
self.loadObjects()
}



func searchBarSearchButtonClicked(searchBar: UISearchBar) {

// Dismiss the keyboard
searchBar.resignFirstResponder()

// Force reload of table data
self.loadObjects()
}


func searchBarCancelButtonClicked(searchBar: UISearchBar) {

// Clear any search criteria
searchBar.text = ""

// Dismiss the keyboard
searchBar.resignFirstResponder()

// Force reload of table data
self.loadObjects()
}


override func viewDidAppear(animated: Bool) {

// Refresh the table to ensure any data changes are displayed
tableView.reloadData()

// Delegate the search bar to this table view class
searchBar.delegate = self

}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject?) -> parseTableViewCell {
var cell = tableView.dequeueReusableCellWithIdentifier("profilSegue") as! parseTableViewCell!
if cell == nil {
cell = parseTableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "mySegue")
}

if let myLabel = object?[myColoumnName] as? String {
cell?.myCellLabel?.text = myLabel


let activityType = String(format: "%@.%@", uniqueIdentifier, domainIdentifier)
activity = NSUserActivity(activityType: activityType)
activity.title = "myTitle"
activity.keywords = Set(arama)
activity.eligibleForSearch = true
activity.becomeCurrent()



let attributeSet = CSSearchableItemAttributeSet(itemContentType: kUTTypeImage as String)
attributeSet.title = "myTitle"
attributeSet.contentDescription = "myDesc"
attributeSet.keywords = arama
let image = UIImage(named: "A.png")!
let data = UIImagePNGRepresentation(image)
attributeSet.thumbnailData = data

let searchableItem = CSSearchableItem(
uniqueIdentifier: uniqueIdentifier,
domainIdentifier: domainIdentifier,
attributeSet: attributeSet)

CSSearchableIndex.defaultSearchableIndex().indexSearchableItems([searchableItem]) { (error) -> Void in
if error != nil {
print("failed with error:(error)n")
}
else {
print("Indexed!n")
}
}
}
if let myLabel2 = object?[myColoumnName2] as? String {
cell?.myCellLabel2?.text = myLabel2
}
return cell
}


override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "detaySegue" {
var detailScene = segue.destinationViewController as! myViewController
if let indexPath = self.tableView.indexPathForSelectedRow {
let row = Int(indexPath.row)
detailScene.currentObject = (objects?[row] as! PFObject)
}
}
}

func addEffect()
{
let effect = UIBlurEffect(style: UIBlurEffectStyle.Dark)

let effectView = UIVisualEffectView(effect: effect)

effectView.frame = CGRectMake(0, 0, self.view.frame.width, self.view.frame.height)

arka.addSubview(effectView)

arka.layer.cornerRadius = 0

arka.layer.masksToBounds = true;
}
}
Link to comment
Sosyal ağlarda paylaş

SpiderS_DangeR said:

degisken isimlerini turkce verdiginden kaynaklaniyor hata


tam olarak anlayamadım? sonuçta bildiriyorum hangi değişkene bağlı olduğunu fark eder mi türkçe ingilizce yok fix bir isim mi olması gerekiyor

loadobjects metodu da parse'ın tableview'a gönderdiği komut import parse tan geliyor
Link to comment
Sosyal ağlarda paylaş

hmm yani genel olarak anlatmak gerekirse, normalde searchbar'ın olduğu bir ekranda 2 tane array'in olur. Bir normal symbolList olsun diğeride filteredSymbolList olsun.

#pragma mark - Search
- (void)searchString:(NSString*)searchString {
if (searchString != nil && searchString.length > 0) {
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF.symbolCode contains[cd] %@",searchString];
self.filteredSymbolList = [self.symbolList filteredArrayUsingPredicate:predicate];
self.filteredSymbolList = [self.filteredSymbolList sortedArrayUsingComparator:^NSComparisonResult(MyPageMarketSymbol *obj1, MyPageMarketSymbol *obj2) {
return [obj1.symbolCode compare:obj2.symbolCode];
}];
}
else {
self.filteredSymbolList = @[];
}

[self.symbolSelectionTableView reloadData];
}

şu şekilde bir method'u searchfield'in textshouldchange method'u içine koyup elindeki symbolList üzerinde dolaşıp filteredSymbolList'e ekledikten sonra tableview reloadData yaparsın
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...