小编skJ*_*osh的帖子

在iOS中检查Internet连接的最佳方法

我一直在通过互联网搜索,以找到在iOS中检查互联网连接的最佳方法,该方法适用于IPv4和IPv6网络环境.我发现有很多可能的答案,但很难混淆哪一个适用.我需要做的是以下内容:

   // Check for internet connection

if (internetConnectionIsAvailable) {
   // make rest calls
}else
   // show cached data
}
Run Code Online (Sandbox Code Playgroud)

我在互联网上找到了以下选项.

选项1: 使用apple Reachability类

有了Reachability我可以检查互联网连接如下,这是短而直接的,不必等待任何响应.

 - (BOOL)connected
    {
        Reachability *reachability = [Reachability reachabilityForInternetConnection];
        NetworkStatus networkStatus = [reachability currentReachabilityStatus];
        return !(networkStatus == NotReachable);
    }

- (void)viewDidLoad {
    [super viewDidLoad];

    if (![self connected]){
     // Not connected
    }else{
    // Connected
    }

}
Run Code Online (Sandbox Code Playgroud)

但是这里互联网检查是在飞行前完成的,这违反了WWDC视频上看到的苹果工程师的建议.此外,如果您检查ReadMe.md,则提到Reachability完全支持IPv6.但是如果在Reachability.m中检查了方法reachabilityForInternetConnection,则他们使用了sockaddr_in,但是没有使用sockaddr_in6,这是推荐用于IPv6网络的.所以我不知道它是否适用于IPv6网络.

选项2:使用Alamofire进行连接

xcode internet-connection reachability ios swift

8
推荐指数
2
解决办法
2万
查看次数

无法在MacOS应用中创建新目录

我正在开发Mac应用程序。我一直在努力在Mac OS的“ 桌面 ”中创建目录。我在High Sierra上工作。一切正常,但突然之间该应用无法在桌面中创建目录。我收到以下权限错误。我正在使用Xcode 9.3和Swift 4.1。

Error Domain=NSCocoaErrorDomain Code=513 "You don’t have permission to save the file “TestDir” in the folder “Desktop”." UserInfo={NSFilePath=/Users/sj/Library/Containers/com.user.TestSync/Data/Desktop/TestDir, NSUnderlyingError=0x60400044cc60 {Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted"
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

class DBManager: NSObject {
    static func getDirectoryPath() -> URL {
        let homeDirectory = URL(fileURLWithPath: NSHomeDirectory())
        let desktopPath = homeDirectory.appendingPathComponent("Desktop")
        let databaseFolder = desktopPath.appendingPathComponent("TestDir")

        return databaseFolder
    }

    static func createFolderIfNotExist() {
        let databaseFolder = DBManager.getDirectoryPath()

        if !FileManager().fileExists(atPath: databaseFolder.path) {
            do {
                try FileManager.default.createDirectory(atPath: databaseFolder.path, withIntermediateDirectories: true, attributes: nil)
            } …
Run Code Online (Sandbox Code Playgroud)

macos nsfilemanager

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