根据@matt 使用的这个精彩答案dispatch_after,我在操场上尝试了代码,它工作正常(没有错误).但是,当我尝试执行向后兼容时DispatchTime.now(),iOS 10只有这样才可用:
func delay( _ delay: Double, closure: () -> ()){
guard #available(iOS 10, *) else {
dispatch_after(
dispatch_time(
DISPATCH_TIME_NOW,
Int64(delay * Double(NSEC_PER_SEC))
),
dispatch_get_main_queue(), closure)
return
}
let when = DispatchTime.now() + delay
DispatchQueue.main.after(when: when, execute: closure)
}
Run Code Online (Sandbox Code Playgroud)
编译器提供修复DISPATCH_TIME_NOWto Replace "DISPATCH_TIME_NOW" with "dispatch_time_t(DISPATCH_TIME_NOW)"并抛出错误说
无法将'Int'类型的值转换为预期的参数类型'dispatch_time_t'(又名'UInt64')
我尝试修复它,因为编译器提供但最终导致更多错误.我应该如何在这里使用向后兼容性?我在做什么错了?请帮助,谢谢!
我正在使用Xcode 8 Beta 4将Swift iOS项目转换为Swift 3.0.绝对值函数显示为不可用.这是一个代码示例......
let myInt = -3
let myAbsoluteInt = abs(myInt)
Run Code Online (Sandbox Code Playgroud)
第二行导致错误说明:'abs' is unavailable: Please use the 'abs(_:)' free function.
想法?
我正在崩溃说我的捆绑ID是零
2016-08-31 10:39:11.630 WeatherHop [52533:17767791] *由于未捕获的异常'NSInternalInconsistencyException'而终止app,原因:'无效的参数不满足:bundleIdentifier!= nil'*第一次抛出调用堆栈:
它使用此代码失败:
let bundleIdentifier = Bundle.main.bundleIdentifier
print("\(bundleIdentifier)")
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) { (granted, error) in
if granted {
}....
Run Code Online (Sandbox Code Playgroud)
print语句正确标识我的包ID,在$(PRODUCT_BUNDLE_IDENTIFIER)中设置
知道我为什么会收到这个错误吗?
我只是在之前的工作版本7上安装了新的Xcode 8.我尝试构建一个现有的ObjC应用程序并获得了持久的链接器错误:
Run Code Online (Sandbox Code Playgroud)error: cannot parse the debug map for "/Users/--- Library/Developer/Xcode/DerivedData/Sunset3- dejxrzrmfgomxxcrzloplmsozads/Build/Products/Debug- iphonesimulator/Sunset3.app/Sunset3": No such file or directory
搜索,以前的修复程序在这里不起作用:
Run Code Online (Sandbox Code Playgroud)1) Reboot after install 2) Xcode Clean Project 3) Turn off bitcode build options 4) for good measure, I tried targeting into 9.0, 9.3, 10.0 - no difference in outcome 5) Also tried three different simulator targets
对日志的进一步评估显示了一个未被前一个IDE标记的dup对象:
Run Code Online (Sandbox Code Playgroud)duplicate symbol _sharedPlaceDate in: /Users/irampil/Library/Developer/Xcode/DerivedData/Sunset3-dejxrzrmfgomxxcrzloplmsozads/Build/Intermediates/Sunset3.build/Debug-iphonesimulator/Sunset3.build/Objects-normal/x86_64/ViewController.o /Users/irampil/Library/Developer/Xcode/DerivedData/Sunset3-dejxrzrmfgomxxcrzloplmsozads/Build/Intermediates/Sunset3.build/Debug-iphonesimulator/Sunset3.build/Objects-normal/x86_64/GraphClass.old:1个用于体系结构x86_64 clang的重复符号:错误:链接器命令失败,退出代码为1(使用-v查看调用)
在XCode8中创建的de novo ObjC项目编译和链接就好了.关于修复重复对象的其他想法?
我试图找出如何使用Swift 3进行狐狸修复代码.
let paths = NSSearchPathForDirectoriesInDomains(.libraryDirectory, .userDomainMask, true) as NSArray
for path in paths {
let dir = path as! String
print("the paths are \(path)")
let urlToExclude = NSURL.fileURL(withPath: dir)
do {
try urlToExclude.setResourceValue(NSNumber(value: true), forKey: URLResourceKey.isExcludedFromBackupKey)
} catch { print("failed to set resource value") }
}
Run Code Online (Sandbox Code Playgroud)
我得到的错误是 
我使用上面的代码来排除备份到iCloud的文件,它曾经适用于以前版本的Swift,但在更新到Xcode 8之后,我只是卡住了.
我真的很感激任何帮助或建议.
我遇到了一个不寻常的行为,我被卡住了一点,问题如下.
我正在使用BWWalkthrough库,以便将4张幻灯片作为启动画面.所以在我的appdelegate中,我有以下代码初始化viewcontrollers:
let storyboard = UIStoryboard(name: "SlidesFlow", bundle: nil)
let walkthrough = storyboard.instantiateViewController(withIdentifier: "SlidesView") as! BWWalkthroughViewController
let page_zero = storyboard.instantiateViewController(withIdentifier: "page_1")
let page_one = storyboard.instantiateViewController(withIdentifier: "page_2")
let page_two = storyboard.instantiateViewController(withIdentifier: "page_3")
let page_three = storyboard.instantiateViewController(withIdentifier: "page_4")
walkthrough.delegate = self
walkthrough.addViewController(page_zero)
walkthrough.addViewController(page_one)
walkthrough.addViewController(page_two)
walkthrough.addViewController(page_three)
Run Code Online (Sandbox Code Playgroud)
一切都按预期工作,所以这里没问题.在viewController page_three上我有一个按钮,使用自定义segue动画将我重定向到另一个视图控制器
class sentSegueFromRight: UIStoryboardSegue {
override func perform()
{
let src = self.source as UIViewController
let dst = self.destination as UIViewController
src.view.superview?.insertSubview(dst.view, aboveSubview: src.view)
dst.view.transform = CGAffineTransform(translationX: src.view.frame.size.width, y: 0)
UIView.animate(withDuration: 0.25,
delay: 0.0,
options: UIViewAnimationOptions.curveEaseInOut, …Run Code Online (Sandbox Code Playgroud) 当我试图打开一个特定的项目时Xcode它崩溃了这个错误消息(部分):
Process: Xcode [729]
Path: /Applications/Xcode.app/Contents/MacOS/Xcode
Identifier: com.apple.dt.Xcode
Version: 8.1 (11544)
Build Info: IDEFrameworks-11544000000000000~4
App Item ID: 497799835
App External ID: 819397000
Code Type: X86-64 (Native)
Parent Process: ??? [1]
Responsible: Xcode [729]
User ID: 501
Date/Time: 2016-11-06 18:39:39.261 +0200
OS Version: Mac OS X 10.12.1 (16B2555)
Report Version: 12
Anonymous UUID: E3BEFD49-5451-DC5B-81D3-2BD8B1F4987F
Time Awake Since Boot: 140 seconds
System Integrity Protection: enabled
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception …Run Code Online (Sandbox Code Playgroud) 我必须重构一个App并在框架中移动遗留代码.
我已完成迁移的第一部分.但是当我启动我的应用程序时,我在第一个屏幕上有一个无限循环
默认的ViewController是一个简单的UIViewController,没有自定义类.
我想手动删除过期的配置文件,但我不想删除所有配置文件.我想添加新的配置文件,但在新的Xcode 8.3.2中,我只能看到证书,如果我通过双击直接添加配置文件,我该如何检查配置文件的日期.