小编boi*_*kan的帖子

使用NSDate获取星期几

我创建了一个方法,该方法应该以"YYYY-MM-DD"形式接收一个字符串并吐出一个int,表示相对于它所在周的日期位置(无论它是否在几个月之间重叠).所以例如星期日= 1星期一= 2,依此类推.

这是我的代码:

    func getDayOfWeek(today:String)->Int{

    var formatter:NSDateFormatter = NSDateFormatter()
    formatter.dateFormat = "YYYY-MM-DD"
    var todayDate:NSDate = formatter.dateFromString(today)!
    var myCalendar:NSCalendar = NSCalendar(calendarIdentifier: NSGregorianCalendar)
    var myComponents = myCalendar.components(NSCalendarUnit.WeekdayOrdinalCalendarUnit, fromDate: todayDate)
    var weekDay = myComponents.weekdayOrdinal
    return weekDay
}
Run Code Online (Sandbox Code Playgroud)

我知道这NSCalendarUnit.WeekdayOrdinalCalendar是错的,但我尝试过我认为最合乎逻辑的组合.并且还混淆了myComponents.weekdayOrdinal例如使用mycomponents.day.weekday.

以下是我可以使用的选项:

static var EraCalendarUnit: NSCalendarUnit { get }
static var YearCalendarUnit: NSCalendarUnit { get }
static var MonthCalendarUnit: NSCalendarUnit { get }
static var DayCalendarUnit: NSCalendarUnit { get }
static var HourCalendarUnit: NSCalendarUnit { get } …
Run Code Online (Sandbox Code Playgroud)

nsdate nscalendar swift

75
推荐指数
11
解决办法
10万
查看次数

AlamoFire GET api请求无法按预期工作

我正在努力学习如何使用AlamoFire而我遇到了麻烦.

到目前为止,我的方法如下:

func siteInfo()->String?{
    var info:NSDictionary!
    var str:String!
    Alamofire.request(.GET, MY_API_END_POINT).responseJSON {(request, response, JSON, error) in
        info = JSON as NSDictionary
        str = info["access_key"] as String
        //return str
    }
    return str
}
Run Code Online (Sandbox Code Playgroud)

这返回nil这是一个问题.从我在这里读到的,这是因为请求可能需要一段时间,因此在返回之前关闭不会执行.将返回值移动到闭包中的建议解决方案对我来说不起作用,编译器只是大喊(->String在之后添加(request,response,JSON,error)"'String'不是void的子类型").所提供的其他解决方案也是如此.

有任何想法吗?甚至一些与此问题无关的源代码(使用AlamoFire)也会有所帮助.

谢谢!

swift alamofire

19
推荐指数
1
解决办法
1万
查看次数

Xcode组织者试图在错误的目录路径上访问传输器

Transporter not found at path: /usr/local/itms/bin/iTMSTransporter. You should reinstall the application.

所以我检查了路径/Applications/Xcode.app/Contents/Applications/Application Loader.app/Contents/MacOS/itms/bin并且iTMSTransporter存在于那里(它与xcode一起安装).错误中给出的路径是手动安装传输器的位置.我如何做到这一点,当我尝试提交我的应用程序时xcode组织者使用路径是通过xcode安装iTMSTransporter?我很困惑为什么它首先要这样做.

xcode itunesconnect itmstransporter

12
推荐指数
2
解决办法
4451
查看次数

在ImageView下面显示UITableView分隔符

所以我有一个清单类型的东西.但是我决定在单元格的左侧显示复选标记.为了实现这一点,我让每个单元格显示一个复选标记png图像cell.imageView?.image = UIImage(named: "check").这工作正常,但我遇到的问题是分隔线没有出现在复选标记下面,如下所示.我不喜欢这看起来如何,因为空细胞分离器延伸细胞的整个长度.有什么建议让分隔符在图像下方可见吗?

uitableview swift

9
推荐指数
1
解决办法
4050
查看次数

UISearchController在点击取消按钮时解除VC

所以,我目前正在尝试用UISearchController替换我的一个项目中的depricated searchDisplayController,我遇到了这个问题.

如果搜索中没有结果(UITableView为空),则整个ViewController被解除.当搜索结果不为空时,不会发生这种情况.我不想说清楚我没有使用UITableViewController.相反,我有一个带有UITableView的常规VC.

这是我的一些代码:

var resultSearchController = UISearchController()
override func viewDidLoad() {
    super.viewDidLoad()
    self.resultSearchController = ({
        let controller = UISearchController(searchResultsController: nil)
        controller.searchResultsUpdater = self
        controller.dimsBackgroundDuringPresentation = false
        controller.searchBar.sizeToFit()
        controller.delegate = self
        controller.searchBar.delegate = self
        self.studentTable.tableHeaderView = controller.searchBar
        return controller
    })()
    ....
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我将此函数添加到等式中,则取消按钮始终会取消VC.

func searchBarCancelButtonClicked(searchBar: UISearchBar) {
    resultSearchController.active = false
}
Run Code Online (Sandbox Code Playgroud)

那么为什么要设置searchController.active = false解雇VC呢?是因为它使用与VC相同的UITableView吗?我相信旧的searchDisplayController只会显示一个正在使用的UITableView.如果是这种情况有没有办法覆盖dismissVC?

uitableview uisearchbar ios swift uisearchcontroller

8
推荐指数
1
解决办法
1300
查看次数

从异步函数重新加载UITable调用

我在http请求中的回调函数中调用这段代码.http请求是用于更新应用程序数据的get.因此,对于一些VC我需要重新加载视图实例,回调完成后更新Core Data中的所有内容.

这是我目前使用的一大块代码(在回调函数中调用).

func reloadTopMost(){
    var topMost = topMostContoller() as UIViewController
    if topMost.isKindOfClass(SecondViewController){
        topMost.reloadInputViews()

        var svc = topMost as SecondViewController
        svc.studentTable.reloadData()
        svc.studentTable.setNeedsDisplay()
        svc.viewDidLoad()
        svc.reloadInputViews()
    }else if topMost.isKindOfClass(ThirdViewController){
        topMost.reloadInputViews()

        var tvc = topMost as ThirdViewController
        tvc.inClassTable.reloadData()
        tvc.inClassTable.setNeedsDisplay()
        tvc.viewDidLoad()
        tvc.reloadInputViews()
    }
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我尝试过reloadData(),setNeedsDisplay(),viewDidLoad和reloadInputViews().我从这个问题的答案中得到的想法.我确信if语句是为每个vc类传递的.所以我不确定为什么这不会重新加载VC /表.这是因为它是在异步函数中调用的吗?

asynchronous uiviewcontroller swift

2
推荐指数
1
解决办法
129
查看次数

在多个线程上读/写自定义对象

我需要能够从Core Data中获取对象并将它们保存在内存中的可变数组中,以避免不断获取和降低UI/UX.问题是我抓住了其他线程上的对象.我也有时在其他线程上写这些对象.因此,我不能只是保存NSManagedObjects在一个数组中,只是调用类似的东西,myManagedObjectContext.performBlock或者myObject.managedObjectContext.PerformBlock因为你不应该在线程之间传递MOC.

我正在考虑使用自定义对象将我需要的数据从CD对象中抛出.这感觉有点愚蠢,因为我已经为实体创建了Model/NSManagedObject类,并且因为自定义对象是可变的,所以它仍然不是线程安全的.这意味着我必须为多个线程上的对象操作执行类似串行队列的操作?因此,例如,每当我想要读/写/删除对象时,我必须将它扔到我的对象serialQueue中.

这一切看起来真的很讨厌所以我想知道这个问题有什么常见的设计模式或类似的东西吗?有没有更好的方法呢?

multithreading core-data grand-central-dispatch nsmanagedobject swift

0
推荐指数
1
解决办法
320
查看次数