小编Dim*_*lov的帖子

Swift:在使用filter函数进行过滤后,调用indexOf时无法将type的值转换为@noescape

在Swift 2中,我收到一个错误:

无法将类型的值转换'[String:AnyObject]'为预期的参数类型'@noescape ([String:AnyObject])'throws - > Bool"

//today = NSDate()
//array : [[String:AnyObject]]
// I use if let because of we might now get element in the array matching our condition

if let elementOfArray = array.filter({$0["id"] as? Int == anotherDictionary["matchID"] as? Int && ($0["nextFireDate"] as? NSDate)?.compare(today) == NSComparisonResult.OrderedAscending}).first {

   let index = array.indexOf(elementOfArray) // error here
}
Run Code Online (Sandbox Code Playgroud)

我做错了什么?我无法理解.:/

我的目标是找到那个项目的索引,我认为我开放替代解决方案,但当然这个是首选,因为我认为这是"正确的方法".

arrays casting filter indexof swift

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

检索文件创建或修改日期

我正在使用这段代码来尝试检索文件的最后修改日期:

NSError *error = nil;
NSDictionary *attributes = [[NSFileManager defaultManager] attributesOfItemAtPath: myFilePath error:&error];

        if (attributes != nil) {
            NSDate *date = (NSDate*)[attributes objectForKey: NSFileModificationDate];
            NSLog(@"Date modiifed: %@", [date description]);
        }
        else {
            NSLog(@"Not found");
        }
Run Code Online (Sandbox Code Playgroud)

这适用于主包中的文件,但如果文件位于应用程序文档文件夹的子目录中,则不适用,myFilePath如下所示:

/Users/User/Library/Application Support/iPhone Simulator/6.0/Applications/The App ID Number/Documents/mySubdirectory/My Saved File
Run Code Online (Sandbox Code Playgroud)

它不断返回"未找到".

我知道文件在那里,因为我可以用finder查看它.我也尝试删除文件名中的空格,但这没有任何效果.

错误日志说没有这样的文件或目录,所以当我尝试将文件复制到文档目录时,看起来肯定出错了.

奇怪的是,迭代文档子目录,contentsOfDirectoryAtPath显示文件存在.

我已尝试对路径进行硬编码并以编程方式检索它,其中:

*myFolder = [documentsDirectory stringByAppendingPathComponent:@"myFolder"];
*myFilePath = [myFolder stringByAppendingPathComponent:theFileName];
Run Code Online (Sandbox Code Playgroud)

谁能看到我哪里出错了?

xcode objective-c last-modified ios nsdocumentdirectory

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

自定义过渡动画unknownControllerForPresentedController和animateTransition之间的未知延迟

我的目标是在第一个视图控制器中启动平滑动画,在第二个视图控制器中结束.

我正在尝试使用符合UIViewControllerAnimatedTransitioningUIViewControllerTransitioningDelegate协议的对象的过渡动画 .我在故事板中设置了两个视图控制器(VC)并将它们与segue连接(默认显示).我还在第一个VC中展开了segue方法,并在第二个VC中为它设置了一个按钮.

我有奇怪的问题.我的对象有方法

func animationControllerForPresentedController(presented: UIViewController, presentingController presenting: UIViewController, sourceController source: UIViewController) -> UIViewControllerAnimatedTransitioning? {

    self.presenting = true
    NSLog("start")
    return self
}

func animateTransition(transitionContext: UIViewControllerContextTransitioning) {
    if presenting {
        NSLog("Animation Push")
        transitionPush(transitionContext)

    }
    else {
        NSLog("Animation Pop")
        transitionPop(transitionContext)

    }
}
Run Code Online (Sandbox Code Playgroud)

我有两种不同的动画方法,从第一个VC到第二个VC,从第二个到第一个VC.当我激活segue时,我animationControllerForPresentedControlleranimateTransition方法之间有很奇怪的延迟.有时它可能是大约1秒,我的整个过渡动画必须是1秒加上这个意想不到的延迟太大了.这是一个日志:

2015-02-08 19:52:33.528 MyApp[1318:119598] start
2015-02-08 19:52:33.979 MyApp[1318:119598] Animation Push
Run Code Online (Sandbox Code Playgroud)

我不知道为什么会出现这种延迟,是否有办法删除或减少它?我试图检查这是否是我的代码,但我没有找到任何证据.随意询问更多信息.

iphone animation uiviewcontroller ios swift

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

mail()在新服务器上不起作用

可能是一个愚蠢的问题,但我找不到php邮件功能不起作用的原因我在debian squeeze上有一个nginx服务器,我最近搬到了它.我尝试过简单的邮件执行,但它返回false.

if(mail('test@email.com', 'test-subject', 'test-text-blablabla'))
   echo 'ok';
else
   echo 'bad';
Run Code Online (Sandbox Code Playgroud)

我该怎么办?

谢谢.

我在php.ini的邮件部分:

[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = localhost
; http://php.net/smtp-port
smtp_port = 25

; For Win32 only.
; http://php.net/sendmail-from
;sendmail_from = me@example.com 

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
;sendmail_path =

; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace …
Run Code Online (Sandbox Code Playgroud)

php email debian sendmail nginx

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

Swift:删除图层,而不删除UITableViewCell中的UIView

我有UITableViewCell UIView.我做了一些CABasicAnimation并将它附加到新的CAShapeLayer,然后我将这个图层添加到我的UITableViewCell中的超级图层:

self.layer.addSublayer(myLayer!)
Run Code Online (Sandbox Code Playgroud)

一切都很好,除了myLayer(和他的动画)显示在我的上方UIView.我希望这个标签在下面UIView.

我通过UIView以相同的方式添加我的图层来实现此目的:

self.layer.addSublayer(myViewLayer!)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我的UIView图层位于带有动画的CAShapeLayer的顶部.

但我有一个问题,我需要删除UIView层 - myViewLayer因为它在滚动时违反了UIView的宽度.

当动画完成后,我需要删除图层,我可以毫无困难地删除CAShapeLayer - myLayer.

myLayer?.removeFromSuperlayer()
Run Code Online (Sandbox Code Playgroud)

但是当我尝试做同样的事情时myViewLayer,我的UIView也被删除了.但我不希望这样,我需要在屏幕上和我的视图层次结构中使用我的UIView.

我不明白为什么,如果self.layer.sublayers我看到这个(在添加图层之前):

[<CALayer: 0x7fd1f0d4fe40>, <CALayer: 0x7fd1f0ddc950>]
Run Code Online (Sandbox Code Playgroud)

完成动画并移除myLayer后:

[<CALayer: 0x7fd1f0d4fe40>, <CALayer: 0x7fd1f0ddc950>, <CAGradientLayer: 0x7fd1f0de3660>]
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,CAGradientLayer是我的UIView层.所以,在我手动将其添加到子图层数组之前,我还没有.我如何删除它,而不删除我的UIView?

或者如何在UIView下面添加myLayer?

编辑

简而言之,我在动画之前有这个图层层次结构:

[<CALayer: 0x7fd1f0d4fe40> <- (I think this is UITableViewCell layer), <CALayer: 0x7fd1f0ddc950> <- (then, this is UITableViewCell content view layer)]
Run Code Online (Sandbox Code Playgroud)

同时,我有这个视图层次结构:

UITableViewCell - >内容视图 - > UIView

我需要在UIView下面添加带动画的新图层(我希望UIView部分覆盖带动画的新图层).我怎么能这样做?

我在UITableView图层层次结构中没有我的UIView图层,所以我不能只使用动画添加动画addLayer:below:等等.

iphone calayer uiview ios swift

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

获取对象是否也会获取核心数据中的关系对象

我在核心数据中有一对多的关系b/w对象.像A == >> B(很多对象)所以A与B对象有一对多的关系.我的问题是,当我获取A对象时,B对象是否也被加载到内存中?如果是,那么当它们被加载?当我访问关系?

iphone ios

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

Amazon S3:缓存控制和到期日差异以及通过REST API设置

我想提高我的网站加载速度,所以我使用http://gtmetrix.com/来检查我可以改进的地方.我获得的"利用浏览器缓存"的最低评级之一.我发现,我的文件(主要是图像)有问题"未指定过期".

好吧,问题很明显,我想.我开始谷歌搜索,我发现亚马逊S3更喜欢缓存控制元数据超过有效期(我失去了这个链接,现在我想也许我误解了一些东西).无论如何,我开始寻找如何将缓存控制元添加到S3对象.我找到了这个页面:http://www.bucketexplorer.com/documentation/amazon-s3--how-to-set-cache-control-header-for-s3-object.html

我了解到,我必须在我的PUT查询中添加字符串.

x-amz-meta-Cache-Control : max-age= <value in seconds> //(等号和数字之间不需要空格(我在这里犯了错误)).

我使用构造:Cache-control:max-age=1296000它工作正常.

之后我阅读了 https://developers.google.com/speed/docs/best-practices/caching 这篇文章告诉我:1)"将过期设置为至少一个月,最好是一年,以后".

2)"我们更喜欢Expires over Cache-Control:max-age,因为它受到更广泛的支持."(在Recommendations主题中).

所以,我开始寻找将过期日期设置为S3对象的方法.我发现了这个:http: //www.bucketexplorer.com/documentation/amazon-s3--set-object-expiration-on-amazon-s3-objects-put-get-delete-bucket-lifecycle.html

我发现:"使用Amazon S3对象生命周期管理,您可以在Amazon S3对象上定义对象到期.一旦为S3对象定义的生命周期到期,Amazon S3将删除此类对象.因此,当您想要保留数据时在S3上仅限时间,并且您希望它由Amazon S3自动删除,您可以设置对象到期."

我不想从S3删除我的文件.我只想添加缓存元数据以获得最长缓存时间或/和文件到期时间.

我完全和这个混淆了.有人可以解释一下我必须使用的东西:对象到期还是缓存控制?

rest caching metadata cache-control amazon-s3

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

有没有办法在 OSX 中以编程方式关闭电池充电?

我阅读了一些关于电池寿命的文章,例如http://www.wired.com/gadgetlab/2013/09/laptop-battery/

我很好奇,我可以管理电池充电过程吗?OS X 中是否有手动停止充电的功能?我发现IOKit这有助于查看电池信息,但我没有找到停止充电/开始充电等功能。

但我也认为 Apple 工程师非常了解他们的工作,并且他们已经优化了电池充电/充电过程。

macos battery

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

iPhone/iPad是否同时使用GPS和GLONASS?我可以管理它们吗?

我知道iPhone/iPad可以使用GPS和GLONASS,但他们是否同时使用它们?

我没有在文档中找到该信息.GPS需要4颗卫星才能正常工作(3没有高空).与GLONASS相同.因此,如果我们只使用GPS,我们就可以得到4颗卫星,并获得我们标准的GPS精度,在开阔的天空中它的容差约为10-20米.我没有在维基GPS页面上找到指定的准确性,也许我只是错过了,但无论如何我的数字很接近.如所述维基百科所述,GLONASS民用精度与GPS相比准确度稍差,但在高纬度(北极或南极),由于卫星的轨道位置,GLONASS的精度优于GPS.GLONASS

因此,如果我们同时使用两个系统,我们的准确度会有很大提高,因为我们有两个以上系统的卫星.我的问题是:iPhone/iPad使用两种系统,它们的位置坐标有时仍然非常不准确吗?有没有办法打开/关闭其中一个系统?

iphone gps location ios

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

CloudKit:CKFetchRecordChangesOperation、CKServerChangeToken 和 Delta 下载

我的问题与 WWDC 2014 Advanced CloudKit 中命名的“Delta Download”有关。

我正在尝试为我的 Core Data 应用程序进行同步,该应用程序目前仅适用于 iPhone(想想:只有一台设备处于活动状态)。因此,对于目前的大多数情况,基本上该应用程序会将来自同一设备的用户记录存储在云中。

我无法理解基于CKFetchRecordChangesOperationDelta 下载的自定义区域功能。

正如我做对的那样,我们必须CKServerChangeToken维护同步操作(我的意思是只下载那些被其他设备添加/修改/删除的记录),正如 WWDC 上所展示的那样。但是,我无法理解的是,我们只有在 之后才会收到该令牌CKFetchRecordChangesOperation,当我们将记录保存到云端时,我们不会获得新的令牌。

如果我们使用当前可用的令牌进行 fetch(因为它只在 fetch 之后改变),我们会收到从我们之前的保存操作中保存的记录。基本上,我们会获得设备上已有的保存记录。为什么?我在这里遗漏了什么?

如果我们将一些数据播种到云端(从设备 A),设备 B 正在获取区域记录的情况是合理的,但如果设备 A 是?重新下载所有记录?

recordChangeTagCKRecord,这是一个属性,我可以用来解决与本地对象的冲突 - 获取的对象(相同或不同的版本),如果是这样,有人可以举出我需要如何执行此操作的示例:保存时将 recordChangeTag 保存到核心数据第一次录制到 CloudKit 还是如何录制?

缺乏文档是一件令人头疼的事。

synchronization nsoperation ios icloud cloudkit

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