swift nsobject class 如何 return 取值
swift nsobject class how to return value
我是 swift 的新手,如何创建通用 class 和 return 字符串这是我的代码,但我犯了错误请帮助我。这是我的 nsobject common class
import UIKit
class DayCount: NSObject {
func doSomething(getDate:String) -> String {
let start = "20150601"
let end = NSDate()
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyyMMdd"
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 ""
}
}
和我的视图控制器我得到了这样的字符串,但它 return 总是错误
let getdate = (DayCount.doSomething("sdfsdfsd"))
println("date===== \(getdate)")
错误是“(string)-> string is not conversionable to DayCount”
我也试过这个
let getdate:String = (DayCount.doSomething("sdfsdfsd"))
println("date===== \(getdate)")
但它总是return我的错误请帮助我在哪里我做错了
let getdate = (DayCount.doSomething("sdfsdfsd"))
不会工作,因为它的语法不正确。
doSomething 是一个方法,DayCount 是一个class。在 class 的实例变量上调用方法。
例如
var aDayCounter : DayCount
是一种定义 Daycount 类型变量的方法。然后,您可以在该类型上调用方法
aDayCounter.doSomething("sdfsdfsd")
您还可以定义 Class 方法或类型方法,因为它们在 Swift 中被调用。 Apple 开发网站对此的解释比我能做的更好:
我是 swift 的新手,如何创建通用 class 和 return 字符串这是我的代码,但我犯了错误请帮助我。这是我的 nsobject common class
import UIKit
class DayCount: NSObject {
func doSomething(getDate:String) -> String {
let start = "20150601"
let end = NSDate()
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyyMMdd"
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 ""
}
}
和我的视图控制器我得到了这样的字符串,但它 return 总是错误
let getdate = (DayCount.doSomething("sdfsdfsd"))
println("date===== \(getdate)")
错误是“(string)-> string is not conversionable to DayCount” 我也试过这个
let getdate:String = (DayCount.doSomething("sdfsdfsd"))
println("date===== \(getdate)")
但它总是return我的错误请帮助我在哪里我做错了
let getdate = (DayCount.doSomething("sdfsdfsd"))
不会工作,因为它的语法不正确。 doSomething 是一个方法,DayCount 是一个class。在 class 的实例变量上调用方法。 例如
var aDayCounter : DayCount
是一种定义 Daycount 类型变量的方法。然后,您可以在该类型上调用方法
aDayCounter.doSomething("sdfsdfsd")
您还可以定义 Class 方法或类型方法,因为它们在 Swift 中被调用。 Apple 开发网站对此的解释比我能做的更好: