小编Cra*_*tis的帖子

强制或"鼓励"iCloud将更改上传到文件

我有一个Mac和iOS应用程序,通过一个"鞋盒"文件使用iCloud共享数据.

大多数情况下,更改会以有效和迅速的方式正确同步.但是,每隔一段时间(特别是现在),我在一台设备上进行的更改只会坐在那里.

我在Mac上对共享数据文件进行了更改,数据已保存到磁盘.但是,我不知道系统是否未能数据上传到iCloud,或者iOS设备未能检查新数据,但我正在弄乱我的拇指.

电话上的iCloud状态

下面的5KB文件是应该更改的文件.无论我在Mac应用程序中做了多少更改,在测试过程中,iCloud都会暂时停止同步更改.如果我走了20分钟然后回来,它可能会再次启动.

此外:如果我在Xcode中运行Mac应用程序并密切关注同一文件,即使我对文件进行了更改并且可以确认磁盘上的文件(在Finder /终端中)实际上正在发生变化,iCloud面板也会在Xcode也不会很快得到这些变化:

Mac上的iCloud状态

请注意,我的Mac上的本地文件系统(9:01)上的相同5KB文件已更改,但iCloud只是没有提取它.此文件中存在实际内容更改,而不仅仅是修改日期更改.

所以,我想找到一种方法:

  1. 以编程方式触发同步,甚至使用Xcode.我知道可以使用模拟器触发iCloud同步,但这仅适用于在iOS上进行测试时,我更喜欢在实际硬件上进行测试.要么,

  2. 确定没有共享数据的人(或什么)"有过错".我从一开始就遵循iCloud文档,确保我使用协调写入来保存更改等.这只是一个非常间歇性的事情,iCloud会打瞌睡,并使​​测试非常令人沮丧.

macos xcode cocoa ios icloud

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

如何在Swift子类中实现复制构造函数?

我在Swift游乐场中有以下示例,试图在Swift中实现一个复制构造函数:

class Shape : NSObject {
    var color : String

    override init() {
        color = "Red"
    }

    init(copyFrom: Shape) {
        color = copyFrom.color
    }
}

class Square : Shape {
    var length : Double

    override init() {
        super.init()
        length = 10.0
    }

    init(copyFrom: Square) { /* Compilation error here! */
        super.init(copyFrom: copyFrom)
        length = copyFrom.length
    }
}

let s : Square = Square()      // {{color "Red"} length 10.0}

let copy = Square(copyFrom: s) // {{color "Red"} length 10.0}

s.color = …
Run Code Online (Sandbox Code Playgroud)

swift

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

从GitLab CI运行器连接到docker-in-docker

我有一个我想要的GitLab管道:

  1. 构建Java应用程序
  2. 使用docker-compose进行测试
  3. 推送到我的Docker存储库

我遇到的主要问题是这是有效的:

services:
  - docker:dind

docker_test:
  stage: docker_test
  image: docker:latest
  script:
  - docker version
Run Code Online (Sandbox Code Playgroud)

输出按预期打印:

> gitlab-ci-multi-runner exec docker --docker-privileged docker_test
...
$ docker version
Client:
 Version:      17.06.0-ce
...
Server:
 Version:      17.06.0-ce
...
Build succeeded
Run Code Online (Sandbox Code Playgroud)

虽然这没有(安装步骤docker-ce省略):

services:
  - docker:dind

docker_test:
  stage: docker_test
  image: ubuntu:latest       << note change
  script:
  - docker version
Run Code Online (Sandbox Code Playgroud)

它失败了:

$ docker version
Client:
 Version:      17.06.0-ce
 API version:  1.30
 Go version:   go1.8.3
 Git commit:   02c1d87
 Built:        Fri Jun 23 …
Run Code Online (Sandbox Code Playgroud)

gitlab docker gitlab-ci docker-in-docker

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

正则表达式正确匹配字符串?

我会在提到这个问题前提到,虽然我离正则表达大师很远,但对我来说并不是完全陌生的.构建一个正则表达式来搜索特定字符串中的模式通常对我来说不是问题,但我有一个(可能是?)独特的情况.

我有一组价值观,比如说:

028938
DEF567987
390987.456
GHI345928.039

我想匹配一组特定的字符串,例如:

  • 字符串由6位数字组成
  • 字符串由正好6位数字组成,小数点后跟3位数字

在上面的例子中,第一个和第三个值应该匹配.

我正在使用正则表达式:

[0-9]{6}
[0-9]{6}.[0-9]{3}
Run Code Online (Sandbox Code Playgroud)

不幸的是,由于以上所有示例都包含指定的模式,因此所有值都匹配.这不是我的意图.

所以我的问题,简而言之,就是如何编写一个完全匹配字符串的正则表达式,匹配模式的右侧或左侧没有其他字符?这种匹配是否有术语?(谷歌没有帮助.)TIA

java regex

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

从Framework确定OS X SDK和部署目标版本

相当简单的问题 - 如果我有一个.framework文件,是否有一个命令/工具可用于确定用于创建框架的SDK和部署目标版本?

同样,这可以在存储在.app文件中的应用程序二进制文件上执行吗?我希望自动化一个脚本,该脚本将搜索以前构建的应用程序/框架列表,而不需要原始.xcodeproj文件,并确定它们的高/低支持的操作系统版本.

macos xcode otool

15
推荐指数
2
解决办法
4047
查看次数

将两个单独的SVN存储库合并到一个Git存储库中

我们有两个Subversion存储库,每个存储库都有一个项目.所以:

svn://server/svn/project_a
svn://server/svn/project_b
Run Code Online (Sandbox Code Playgroud)

它们是单独的项目,位于具有完全独立的提交历史的单独存储库中.项目A有r1, r2, ... r100,项目B有r1, r2, ... r400

我们最终希望将这两个SVN存储库合并到一个Git存储库中.无论合并是在Git中进行,还是应该先在第三个临时SVN存储库中进行,我们最终都希望看到:

git://server/svn/projects/
Run Code Online (Sandbox Code Playgroud)

这是一个包含项目A和项目B的存储库.它们将存储在单独的文件夹中,例如:

git://server/svn/projects/project_a
git://server/svn/projects/project_b
Run Code Online (Sandbox Code Playgroud)

所以不会有任何"合并"两者的冲突.我们能够完美地使用这个答案将单个SVN项目转移到单个Git项目中,并包含提交历史记录.

我们想将两个SVN项目A和B合并到一个Git存储库中,但我们希望按日期合并提交.即:

8b8dad: Project A, r1 (first commit in Git)
dbdffe: Project B, r1 (child of previous)
0ae7f7: Project B, r2 ...
615b51: Project A, r2 ...
916e59: Project A, r3 ...
85f241: Project B, r3 ...
Run Code Online (Sandbox Code Playgroud)

这可能吗?我们应该将两个SVN存储库合并为一个,然后导入Git吗?或者更容易将它们分开,并在Git导入期间执行合并?

svn git merge

14
推荐指数
2
解决办法
6656
查看次数

如何在Xcode中更新Swift依赖项

在我创建一个带有依赖项的新swift包后,我调用了swift package generate-xcodeproj.如果我的依赖项有一个新版本我打电话swift package update.我的依赖项的新版本被下载和构建,但Xcode现在对旧版本的依赖项有一个错误的引用.我可以swift package generate-xcodeproj再次打电话,但这将删除我设置的任何自定义目标.

如何更新我的swift依赖项和我的Xcode项目而不删除我的自定义目标?

xcode swift swift-package-manager

14
推荐指数
4
解决办法
1550
查看次数

C中几个耗时的操作是什么?

我正在寻找一个可以在各种机器上编译和运行的快速基准程序.而不是使用商业/开源可用的选项,我宁愿自己使用线程和算法优化技术.

我有一对我已经使用过的,包括递归计算斐波那契序列的第n个数,以及播种/ rand()数千次.

是否有其他算法相对简单,但同时计算密集(可能与数学相关)?

(请注意,这些操作将以C语言实现.)

c algorithm math cpu benchmarking

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

下载iCloud文件的方法?很混乱?

我在我的应用程序中有基本的iCloud支持(同步更改,无处不在等),但到目前为止一个重要的遗漏是缺乏对云中存在(或有变化)的文件的"下载"支持,但不是与当前磁盘上的内容同步.

我根据一些Apple提供的代码,在我的应用程序中添加了以下方法,并进行了一些调整:

下载方式:

- (BOOL)downloadFileIfNotAvailable:(NSURL*)file {
    NSNumber*  isIniCloud = nil;

    if ([file getResourceValue:&isIniCloud forKey:NSURLIsUbiquitousItemKey error:nil]) {
        // If the item is in iCloud, see if it is downloaded.
        if ([isIniCloud boolValue]) {
            NSNumber*  isDownloaded = nil;
            if ([file getResourceValue:&isDownloaded forKey:NSURLUbiquitousItemIsDownloadedKey error:nil]) {
                if ([isDownloaded boolValue])
                    return YES;

                // Download the file.
                NSFileManager*  fm = [NSFileManager defaultManager];
                NSError *downloadError = nil;
                [fm startDownloadingUbiquitousItemAtURL:file error:&downloadError];
                if (downloadError) {
                    NSLog(@"Error occurred starting download: %@", downloadError);
                }
                return NO;
            }
        }
    }

    // Return …
Run Code Online (Sandbox Code Playgroud)

macos objective-c ios icloud

13
推荐指数
3
解决办法
9446
查看次数

NSWindowController使用Storyboard自动保存

我有一个Swift应用程序正在启动一个简单的NSWindow,如下所示:

func applicationDidFinishLaunching(notification: NSNotification!) {
    let storyboard = NSStoryboard(name: "MainStoryboard", bundle: NSBundle.mainBundle())
    windowController = storyboard.instantiateInitialController() as? NSWindowController
    windowController?.showWindow(self)
}
Run Code Online (Sandbox Code Playgroud)

这很好用,我的应用程序启动并出现窗口.但是:大小始终相同.

在故事板中,我指定了一个Autosave名称:

MainStoryboard

另请注意,Restorable复选框已选中.

但无论如何,每次窗口看起来都是相同的.这在过去总是"刚刚起作用",所以我不知道这是一个错误,还是我错过的一个部分.在手动实例化和显示窗口时,自动保存是否自动与故事板一起使用?

macos xcode cocoa storyboard osx-yosemite

13
推荐指数
3
解决办法
2574
查看次数