小编Jos*_*nor的帖子

在Swift中为我的Core Data默认堆栈创建单例

我正在尝试使用单例进行核心数据.以前,我已经成功地通过CoreDataStack.h/.m在Objective-C中创建一个类,调用下面的默认堆栈方法及其各自的托管对象上下文,并且非常有效:

//RETURNS CoreDataStack
+ (instancetype)defaultStack {
    static CoreDataStack *defaultStack;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        defaultStack = [[self alloc]init];
    });

    return defaultStack;
}
Run Code Online (Sandbox Code Playgroud)

但是,我正在使用Swift项目,我一直在努力将其转换为最新的Swift语法.我该怎么做呢?这是我到目前为止的尝试:

class func defaultStack() -> Self {
    var defaultStack: CoreDataStack
    var onceToken: dispatch_once_t = 0
    dispatch_once(&onceToken) {
       defaultStack = self.init()
    }
    return defaultStack
}
Run Code Online (Sandbox Code Playgroud)

和我的Xcode生成错误:

在此输入图像描述

singleton core-data ios swift

3
推荐指数
1
解决办法
1506
查看次数

自定义 TableView 滚动指示器 (iOS)

我有一个使用表格视图的应用程序,有时此表格视图中可以有多达 100 个项目。因此,我被分配定制这个滚动指示器,以便用户可以轻松地滚动其内容。为此,我需要执行以下操作:

1)我需要滚动指示器始终显示。

2)我需要将滚动指示器从iOS默认的灰色指示器更改为橙色指示器,并在其中间添加一个向内延伸的标签。该标签将包含电池的日期。当您在滚动条中向下滚动时,日期会发生变化以反映您在页面上的位置。(参见图片以了解详情)。

3) 当您单击并按住此自定义 TableView 的滚动指示器时,它可以实现快速滚动。

解决这个问题的最佳方法是什么?我应该使用图书馆吗?

在此输入图像描述

ios

3
推荐指数
1
解决办法
5331
查看次数

获取应用程序的安装日期 (iOS)

我想知道是否可以获得应用程序的安装日期。我很清楚您可以在首次加载应用程序时存储到 NSUserDefaults,但如果可能的话,我正在寻找安装日期。

干杯

ios

3
推荐指数
1
解决办法
8499
查看次数

拒绝联系人访问(联系人框架,iOS)

我正在使用联系人框架。如果用户在设置屏幕中将其关闭,我在启用联系人时遇到问题:Settings app -> App name -> Turn Contacts off

如果用户在设置屏幕中关闭应用程序联系人权限,是否可以显示一个对话框以允许他们打开联系人?似乎 access = 总是 false。一旦用户通过设置关闭联系人,我们是否就不允许访问?

这是我的相关代码:

func requestForAccess(completionHandler: @escaping (_ accessGranted: Bool) -> Void) {
    let authorizationStatus = CNContactStore.authorizationStatus(for: CNEntityType.contacts)

    switch authorizationStatus {
    case .authorized:
        completionHandler(true)

    case .denied, .notDetermined:
        self.contactStore.requestAccess(for: CNEntityType.contacts, completionHandler: { (access, accessError) -> Void in
            if access {
                completionHandler(access)
            }
            else {
                //Access is always false
                if authorizationStatus == CNAuthorizationStatus.denied {
                    completionHandler(false)
                }
            }
        })

    default:
        completionHandler(false)
    }
}
Run Code Online (Sandbox Code Playgroud)

contacts ios

3
推荐指数
1
解决办法
1722
查看次数

转到导航堆栈中的上一个控制器(Swift)

我试图在alertView之后将popViewController发送到导航堆栈中的上一个View Controller.截至目前,我的程序将不会运行popViewController方法,因为alertView会阻塞,并显示错误:

    UINavigationController 0x17670900 while an existing transition or presentation is occurring; the navigation stack will not be updated.
Run Code Online (Sandbox Code Playgroud)

用户在alertView中单击"确定"后,如何运行popViewController方法?我是否必须设置一个代理,以检测用户点击的时间是否正常?

这是我的代码:

    //alertView after Picture saved
    let alertView = UIAlertController(title: "Success!", message: "Record Saved to Database", preferredStyle: .Alert)
    alertView.addAction(UIAlertAction(title: "Ok", style: .Default, handler: nil))

    self.presentViewController(alertView, animated: true, completion: nil)

    //go to previous controller using popViewController, doesnt work, brings up error message
    if let navController = self.navigationController {
        navController.popViewControllerAnimated(true)
    }
Run Code Online (Sandbox Code Playgroud)

iphone uialertview ios swift

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

按钮标题的文字缩短(iOS)

我有一个带有自定义文本(标志性)的按钮.我的问题是我的按钮中的标题中的"g"被切断了.如何让g不被切断?

在此输入图像描述

即使我把按钮的高度设得很大,它也会从g上切下来.

在此输入图像描述

uibutton ios

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

检查 NSDate 是否是 6 个月前

我已经从我的服务器返回了一个 NSDate 值,我需要知道这个 NSDate 是多久以前的。我需要编写一个条件来查看日期是否超过 6 个月(在 Swift 中,但我可以转换为 Objective-C)。

这是在控制台中打印时返回的 NSDate:

 (2015-09-07 01:22:01 +0000)
Run Code Online (Sandbox Code Playgroud)

我如何检查上述日期是否早于 6 个月?

逻辑将是这样的:

//dateValue is the NSDate returned
var dateValue = log.createdAt
    if (dateValue > 6 months){
    }
    else{
    }
Run Code Online (Sandbox Code Playgroud)

datetime cocoa-touch calendar nsdate ios

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

更新到Swift 3.0:上下文类型"AnyObject"不能与字典文字一起使用

我将我的代码库更新为Swift 3.0,我无法弄清楚如何修复迁移时生成的错误:"上下文类型'AnyObject'不能与字典文字一起使用".任何帮助将不胜感激.

typealias JSONDictionary = Dictionary<String, AnyObject>

func infoDict() -> JSONDictionary {
    return ["users" :
        //the following line generates the error "Contextual type 'AnyObject' cannot be used with dictionary literal"
        ["add" : Array(self.addUserIDs), "del" : Array(self.removeUserIDs)],
            "groups" :
                ["add" : Array(self.addCircleIDs), "del" : Array(self.removeCircleIDs)],
            "friends" : friends,
            "type" : 1
    ]
}
Run Code Online (Sandbox Code Playgroud)

ios swift3

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

在iOS中泄露内存

我运行了仪器的'Leaks'工具来测试我的应用程序是否有任何泄漏,并且它向我显示我有一些泄漏.我不是修理泄漏的专家,我想知道是否

  1. 我有泄漏,而且
  2. 我应该怎么做才能解决它.

在此输入图像描述

memory-leaks ios

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

"没有下标成员"错误(迁移到Swift 3)

我目前正在将我的代码迁移到Swift 3,并且遇到了一个我无法弄清楚的错误.observeValue(forKeyPath函数已在Swift 3中更新,我的代码不再适用于此.错误状态"类型'[NSKeyValueChangeKey:Any]?'没有下标成员",它指向下标常量"更改".在Swift 3中的一些原因,它不会让我下标更改参数.如何修复此错误?

override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
    //Line below is generating error: Type '[NSKeyValueChangeKey: Any]?' has no subscript members
    let change = change["new"] as? Float
}
Run Code Online (Sandbox Code Playgroud)

ios swift3

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