質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.62%

  • Swift

    7056questions

    Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

  • Twitter

    642questions

    Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

  • Core Data

    28questions

    Core DataはAppleのOS X and iOSのためのオブジェクトモデリングと持続性を持ったフレームワークです。Xcodeはエンティティー、属性そして関係性を特定するためのオブジェクトモデルの編集機能を提供します。

Swift: CoreDataに保存した情報の条件判定

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 826

NorthCool

score 2

Swift初心者による初投稿です。
Twitter fabricを利用して、自分のTimelineを表示し、スワイプボタンで各カテゴリに分けることができるにしたいと思っております。
その際、CoreDataで保存した2種類の情報(ツイートIDと自分でタグ付けした値)の条件判定ができず、大変困っております。

Deleteボタンを押したツイートに関してはツイートのIDを保存し、CoreDataで保存したIDと照らし合わせて次回から表示にすることができたのですが、ツイートのIDとタグによる値付けをしたツイートに関しては2変数あり、どのようにすればうまくできるのかわかりません。
こちらのやり方が効率的ではないかもしれませんが、条件判定の仕方につき、ご教示いただけますと幸いです。どうぞ宜しくお願い致します。

<TimelineViewController.swift>

 override func loadMore(cb: ()->(), errcb: ()->()) {
        
        var params = ["result_type": "recent", "count":"35"]

        TwitterAPI.getUserTL(params, tweets:{
            twttrs in
            cb()
            for tweet in twttrs {
                // Deleteボタンを押したツイートを次回から非表示にする
                if FunnelStore.sharedInstance.getStoredData(tweet.tweetID) != nil {
                    continue
                }
                 // ここがおかしい。(スワイプボタンをタッチしたセルにfunnelTagで値をつけ、次回から非表示にしたい)どのようにすればよいのでしょうか。
                if TagStore.sharedInstance.getStoredData(funnelTag, id: tweet.tweetID) != nil {
                    continue
                }
                //ここもおかしい。funnelTagで1,2,3と値を振って振り分けようとしてます
                if TagStore.sharedInstance.getStoredData(2, id: tweet.tweetID) != nil {
                    continue
                }
      //ここもおかしい
                if TagStore.sharedInstance.getStoredData(3, id: tweet.tweetID) != nil {
                    continue
                }
                
                self.tweets.append(tweet)
            }
                self.tableView.reloadData()
            
            }, error: {
                error in
                self.alert = UIAlertController(title:  error.localizedDescription , message: nil, preferredStyle: UIAlertControllerStyle.Alert)
                self.alert!.addAction(UIAlertAction(title: NSLocalizedString("common_close" , comment: ""), style:  UIAlertActionStyle.Cancel, handler: nil))
                self.presentViewController(self.alert!, animated: true, completion: nil)
                errcb()
                
        })
    }
// 途中略

 // UITableViewDelegate
   
    
    func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [AnyObject]? {
        
        let cell = super.tableView(tableView, cellForRowAtIndexPath: indexPath) as? CustomTableViewCell
        
        let funnelOne = UITableViewRowAction(style: .Normal, title: "funnel") {
            (action, indexPath) -> Void  in
            
            tableView.setEditing(false, animated: true)
            cell!.tag = 1 
            self.funnelTweet(cell!)
            self.tweets.removeAtIndex(indexPath.row) 
        }
        
        let funnelTwo = UITableViewRowAction(style: .Default, title: "funnel") {
            (action, indexPath) -> Void in
            
            tableView.setEditing(false, animated: true)
            cell!.tag = 2
            self.funnelTweet(cell!)
            println("tag is \(cell!.tag)")
            
            self.tweets.removeAtIndex(indexPath.row)
           
        }
ご参考までにタグ付けのほうのCore Dataの一部も添付致します
<Core Data>
  // check if a tweet id is in stored data
    func getStoredData(funnelTag: Int, id:String) -> NSManagedObject? {
        for obj: NSManagedObject in self.readDataList {
            if funnelTag ==  obj.valueForKey("funnelTag") as? Int{
                return obj
            }
            if id ==  obj.valueForKey("funnelTag") as? String {
                return obj
            }
        }
        return nil
    }
func saveData(createdAt: NSDate, funnelTag: Int, id: String) {
        // get managedObjectContext from AppDelegate
        let appDelegate: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
        let managedContext: NSManagedObjectContext = appDelegate.managedObjectContext!
        // create new managedobject
        let entity = NSEntityDescription.entityForName(self.entityName, inManagedObjectContext: managedContext)
        let obj = NSManagedObject(entity: entity!, insertIntoManagedObjectContext: managedContext)
        obj.setValue(createdAt, forKey: "createdAt")
        obj.setValue(funnelTag, forKey: "funnelTag")
        obj.setValue(id, forKey: "id")
        var error: NSError?
        if !managedContext.save(&error){
            //   println("Could not save \(error), \(error?.userInfo)")
        }
        // reload data
        load()
    }
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.62%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Swift

    7056questions

    Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

  • Twitter

    642questions

    Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

  • Core Data

    28questions

    Core DataはAppleのOS X and iOSのためのオブジェクトモデリングと持続性を持ったフレームワークです。Xcodeはエンティティー、属性そして関係性を特定するためのオブジェクトモデルの編集機能を提供します。