Showing posts with label Swift. Show all posts
Showing posts with label Swift. Show all posts

Tuesday, September 1, 2015

Facebook Video Upload on iOS using latest Facebook SDK for iOS(4.x)

 let videoData = NSData(contentsOfURL: NSURL.fileURLWithPath(path))
        
        if (hasGrantedPermission("publish_actions")) {
            
            var params = [String: AnyObject]()
            params["fields"] = ""
            params["video.mov"] = videoData
            params["contentType"] = "video/quicktime"
            params["description"] = "Test"
            FBSDKGraphRequest(graphPath: "/me/videos", parameters: params, HTTPMethod:"POST").startWithCompletionHandler {
                (connection, result, error) -> Void in
            }

        }

Wednesday, July 1, 2015

Detect idle time and do something when timer fires (Swift)

func resetIdleTimer()
    {

        if (idleTimer == nil)
        {
           idleTimer = NSTimer.scheduledTimerWithTimeInterval(kMaxIdleTimeSeconds, target: self, selector: "idleTimerExceeded:", userInfo: nil, repeats: false)
        }
        else
        {
           if (fabs(idleTimer.fireDate.timeIntervalSinceNow) < kMaxIdleTimeSeconds-1.0)
           {
               idleTimer.fireDate = NSDate(timeIntervalSinceNow: kMaxIdleTimeSeconds)
            
           }
        }
    }
    
    func idleTimerExceeded(sender: AnyObject)
    {
        idleTimer = nil

//do something when timer fires
    }

Thursday, June 25, 2015

hide/show with animation in Swift

For hiding the dock like view and show again

 func hide(sender: AnyObject)
 {
     let frame = hideshowView?.frame
     let height = frame?.size.height
     let offsetY = height!
        
     //hide after 10 seconds delay
     if frame != nil {
     UIView.animateWithDuration(0.5, delay: 10.0, options: UIViewAnimationOptions.CurveEaseIn, animations: { [weak self] () -> Void in
                
                if let weakSelf = self
                {
                    weakSelf.segmentedControl?.frame = CGRectOffset(frame!, 0, offsetY)
                    weakSelf.openBottomBarButton.hidden = false
                }
            }) { (Bool v) -> Void in
            }
      }
 }
    
 func show(sender: AnyObject)
 {
        let frame =  hideshowView?.frame
        let height = frame?.size.height
        let offsetY = -height!
        
        //show without delay
        UIView.animateWithDuration(0.5)
        {
            hideshowView?.frame = CGRectOffset(frame!, 0, offsetY)
        
        }
}

Friday, June 19, 2015

Setting ImageView corner radius iOS, Swift

To get rounded image view

imageView.layer.cornerRadius = imageView.frame.size.width / 2
imageView.layer.masksToBounds = true



Check whether array contains element in Swift

extension Array {
    func contains<T where T : Equatable>(obj: T) -> Bool {
        return self.filter({$0 as? T == obj}).count > 0
    }
}
array.contains(element)
Also can use Dollar Framework: http://www.dollarswift.org

Thursday, June 11, 2015

Converting Milliseconds to readable Time (hh:mm:ss) format

String convertMS(int ms) {
    int seconds = (int) ((ms / 1000) % 60);
    int minutes = (int) (((ms / 1000) / 60) % 60);
    int hours = (int) ((((ms / 1000) / 60) / 60) % 24);

    String sec, min, hrs;
    if(seconds<10 0="" code="" else="" hours="=" hrs="" if="" min="" minutes="" return="" sec="" seconds="">
In Swift:

func convertMilliSeconds(milliSeconds : NSNumber) -> String
    {
        let seconds = (milliSeconds.integerValue / 1000) % 60
        let minutes = ((milliSeconds.integerValue / 1000) / 60) % 60
        let hours = (((milliSeconds.integerValue / 1000) / 60) / 60) % 24
        
        var sec : String
        var min : String
        var hrs: String
        if seconds<10
        {
            sec = "0\(seconds)"
        }
        else
        {
            sec = "\(seconds)"
        }
        if(minutes<10)
        {
            min = "0\(minutes)"
        }
        else
        {
            min = "\(minutes)"
        }
        if(hours<10)
        {
            hrs = "0\(hours)"
        }
        else
        {
            hrs = "\(hours)"
        }
        
        if(hours == 0)
        {
            return "\(min):\(sec)"
        }
        else
        {
            return "\(hours):\(minutes):\(seconds)"
        }
        

    }

Wednesday, May 27, 2015

[__NSCFNumber length]: unrecognized selector sent to instance

If you get any of these runtime errors/warnings:
[__NSCFNumber length]: unrecognized selector sent to instance
restkit.object_mapping:RKMappingOperation.m: Coercing NSNull value to nil in shouldSetValue:atKeyPath: -- should be fixed
class User: NSObject {
    var userId: String?
    var userImageUrl: String?

}

Check whether server is sending JSON response not as String like
{
  "id":12345
  "avatar_url":""
}

Solution:

Such error causing properties should be defined as NSObject

class User: NSObject {
    var userId: NSObject?
    var userImageUrl: String?

}

Tuesday, May 19, 2015

Overriding isEqual in Swift

class MyClass: NSObject {

    var value = 5

    override func isEqual(object: AnyObject?) -> Bool {
        if let object = object as? MyClass {
            return value == object.value
        } else {
            return false
        }
    }

    override var hash: Int {
        return value.hashValue
    }
}
var x = MyClass()
var y = MyClass() 
x.isEqual(y) // true

Tuesday, May 12, 2015

Adding Notifications in Swift

Post Notification:

NSNotificationCenter.defaultCenter().postNotificationName("NotificationIdentifier", object: nil)

Add Observer for Notification in ViewWillAppear:

          
NSNotificationCenter.defaultCenter().addObserver(self, selector: "methodOfReceivedNotification:", name:"NotificationIdentifier", object: nil)


Remove in ViewWillDisappear:
        
NSNotificationCenter.defaultCenter().removeObserver(self, name: "NotificationIdentifier", object: nil)Remove in ViewWillDisappear:
Selector Method:

func methodOfReceivedNotification(notification: NSNotification){
    //Action on Notification
}