我正在尝试使用单例进行核心数据.以前,我已经成功地通过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生成错误:
我有一个使用表格视图的应用程序,有时此表格视图中可以有多达 100 个项目。因此,我被分配定制这个滚动指示器,以便用户可以轻松地滚动其内容。为此,我需要执行以下操作:
1)我需要滚动指示器始终显示。
2)我需要将滚动指示器从iOS默认的灰色指示器更改为橙色指示器,并在其中间添加一个向内延伸的标签。该标签将包含电池的日期。当您在滚动条中向下滚动时,日期会发生变化以反映您在页面上的位置。(参见图片以了解详情)。
3) 当您单击并按住此自定义 TableView 的滚动指示器时,它可以实现快速滚动。
解决这个问题的最佳方法是什么?我应该使用图书馆吗?
我想知道是否可以获得应用程序的安装日期。我很清楚您可以在首次加载应用程序时存储到 NSUserDefaults,但如果可能的话,我正在寻找安装日期。
干杯
我正在使用联系人框架。如果用户在设置屏幕中将其关闭,我在启用联系人时遇到问题: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) 我试图在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) 我已经从我的服务器返回了一个 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) 我将我的代码库更新为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) 我目前正在将我的代码迁移到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 ×10
swift ×2
swift3 ×2
calendar ×1
cocoa-touch ×1
contacts ×1
core-data ×1
datetime ×1
iphone ×1
memory-leaks ×1
nsdate ×1
singleton ×1
uialertview ×1
uibutton ×1