swift nsobject class how to return value

i am new in swift how to create common class and return string Here is my code where i do mistake Please help me. This is my nsobject common class

import UIKit

    class DayCount: NSObject {

        func doSomething(getDate:String)  -> String   {


            let start = "2015­06­01"

            let end = NSDate()

            let dateFormatter = NSDateFormatter()

            dateFormatter.dateFormat = "yyyy­MM­dd"

            var endDateSting:String = dateFormatter.stringFromDate(end)

            let startDate:NSDate = dateFormatter.dateFromString(start)!

            let endDate:NSDate = dateFormatter.dateFromString(endDateSting)!

            let cal = NSCalendar.currentCalendar()

            let unit:NSCalendarUnit = .CalendarUnitDay

            let components = cal.components(unit, fromDate: startDate, toDate:

                endDate, options: nil)

            println(components)
            let date:String? = (self.timeAgoSinceDate(startDate, numericDates: Bool()))

            println(date)

            return date!


            }

        func timeAgoSinceDate(date:NSDate, numericDates:Bool) -> String {
            let calendar = NSCalendar.currentCalendar()

            let unitFlags = NSCalendarUnit.CalendarUnitMinute |

                NSCalendarUnit.CalendarUnitHour | NSCalendarUnit.CalendarUnitDay |

                NSCalendarUnit.CalendarUnitWeekOfYear

            NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitYear |

                NSCalendarUnit.CalendarUnitSecond

            let now = NSDate()

            let earliest = now.earlierDate(date)

            let latest = (earliest == now) ? date : now

            let components:NSDateComponents = calendar.components(unitFlags,

                fromDate: earliest, toDate: latest, options: nil)

            if (components.year >= 2) {

            } else if (components.year >= 1){

            } else if (components.month >= 2) {

            } else if (components.month >= 1){

            } else if (components.weekOfYear >= 2) {

            } else if (components.weekOfYear >= 1){

            } else if (components.day >= 2) {

            } else if (components.day >= 1){

            } else if (components.hour >= 2) {

            } else if (components.hour >= 1){

                return "\(components.year) years ago"

                if (numericDates){

                    return "1 year ago"

                } else {

                    return "Last year"

                }

                return "\(components.month) months ago"

                if (numericDates){

                    return "1 month ago"

                } else {

                    return "Last month"

                }

                return "\(components.weekOfYear) weeks ago"

                if (numericDates){

                    return "1 week ago"

                } else {

                    return "Last week"

                }

                return "\(components.day) days ago"

                if (numericDates){

                    return "1 day ago"

                } else {

                    return "Yesterday"

                }

                return "\(components.hour) hours ago"

                if (numericDates){

                    return "1 hour ago"

                } else {

                    return "An hour ago"

                }

            } else if (components.minute >= 2) {

                return "\(components.minute) minutes ago"

            } else if (components.minute >= 1){

                if (numericDates){

                    return "1 minute ago"

                } else {

                    return "A minute ago"

                }

            } else if (components.second >= 3) {

                return "\(components.second) seconds ago"

            } else {

                return "Just now"

            }
            return ""
        }





    }

and my view controller i have get this string like this but its return always error

let getdate = (DayCount.doSomething("sdfsdfsd")) 
        println("date===== \(getdate)")

The error is "(string)-> string is not convertible to DayCount" i have also Try this

let getdate:String = (DayCount.doSomething("sdfsdfsd"))
        println("date===== \(getdate)")

But it always return me error please help me where i do mistake

Upvotes: 0

Views: 1012

Answers (1)

Glenn
Glenn

Reputation: 2806

let getdate = (DayCount.doSomething("sdfsdfsd")) 

won't work because it's not correct syntax. doSomething is a method, DayCount is a class. A method is invoked on an instance variable of a class. eg

var aDayCounter : DayCount

is a way to define a variable of type Daycount. On that type you can then invoke the method

aDayCounter.doSomething("sdfsdfsd")

You can also define Class methods or Type methods as they're called in Swift. the Apple dev site explains this better than I can do:

https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Methods.html

Upvotes: 1

Related Questions