在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)
我做错了什么?我无法理解.:/
我的目标是找到那个项目的索引,我认为我开放替代解决方案,但当然这个是首选,因为我认为这是"正确的方法".
我正在使用这段代码来尝试检索文件的最后修改日期:
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)
谁能看到我哪里出错了?
我的目标是在第一个视图控制器中启动平滑动画,在第二个视图控制器中结束.
我正在尝试使用符合UIViewControllerAnimatedTransitioning和UIViewControllerTransitioningDelegate协议的对象的过渡动画 .我在故事板中设置了两个视图控制器(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时,我animationControllerForPresentedController和animateTransition方法之间有很奇怪的延迟.有时它可能是大约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)
我不知道为什么会出现这种延迟,是否有办法删除或减少它?我试图检查这是否是我的代码,但我没有找到任何证据.随意询问更多信息.
可能是一个愚蠢的问题,但我找不到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) 我有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:等等.
我在核心数据中有一对多的关系b/w对象.像A == >> B(很多对象)所以A与B对象有一对多的关系.我的问题是,当我获取A对象时,B对象是否也被加载到内存中?如果是,那么当它们被加载?当我访问关系?
我想提高我的网站加载速度,所以我使用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删除我的文件.我只想添加缓存元数据以获得最长缓存时间或/和文件到期时间.
我完全和这个混淆了.有人可以解释一下我必须使用的东西:对象到期还是缓存控制?
我阅读了一些关于电池寿命的文章,例如http://www.wired.com/gadgetlab/2013/09/laptop-battery/
我很好奇,我可以管理电池充电过程吗?OS X 中是否有手动停止充电的功能?我发现IOKit这有助于查看电池信息,但我没有找到停止充电/开始充电等功能。
但我也认为 Apple 工程师非常了解他们的工作,并且他们已经优化了电池充电/充电过程。
我知道iPhone/iPad可以使用GPS和GLONASS,但他们是否同时使用它们?
我没有在文档中找到该信息.GPS需要4颗卫星才能正常工作(3没有高空).与GLONASS相同.因此,如果我们只使用GPS,我们就可以得到4颗卫星,并获得我们标准的GPS精度,在开阔的天空中它的容差约为10-20米.我没有在维基GPS页面上找到指定的准确性,也许我只是错过了,但无论如何我的数字很接近.如所述维基百科所述,GLONASS民用精度与GPS相比准确度稍差,但在高纬度(北极或南极),由于卫星的轨道位置,GLONASS的精度优于GPS.GLONASS
因此,如果我们同时使用两个系统,我们的准确度会有很大提高,因为我们有两个以上系统的卫星.我的问题是:iPhone/iPad使用两种系统,它们的位置坐标有时仍然非常不准确吗?有没有办法打开/关闭其中一个系统?
我的问题与 WWDC 2014 Advanced CloudKit 中命名的“Delta Download”有关。
我正在尝试为我的 Core Data 应用程序进行同步,该应用程序目前仅适用于 iPhone(想想:只有一台设备处于活动状态)。因此,对于目前的大多数情况,基本上该应用程序会将来自同一设备的用户记录存储在云中。
我无法理解基于CKFetchRecordChangesOperationDelta 下载的自定义区域功能。
正如我做对的那样,我们必须CKServerChangeToken维护同步操作(我的意思是只下载那些被其他设备添加/修改/删除的记录),正如 WWDC 上所展示的那样。但是,我无法理解的是,我们只有在 之后才会收到该令牌CKFetchRecordChangesOperation,当我们将记录保存到云端时,我们不会获得新的令牌。
如果我们使用当前可用的令牌进行 fetch(因为它只在 fetch 之后改变),我们会收到从我们之前的保存操作中保存的记录。基本上,我们会获得设备上已有的保存记录。为什么?我在这里遗漏了什么?
如果我们将一些数据播种到云端(从设备 A),设备 B 正在获取区域记录的情况是合理的,但如果设备 A 是?重新下载所有记录?
我recordChangeTag在CKRecord,这是一个属性,我可以用来解决与本地对象的冲突 - 获取的对象(相同或不同的版本),如果是这样,有人可以举出我需要如何执行此操作的示例:保存时将 recordChangeTag 保存到核心数据第一次录制到 CloudKit 还是如何录制?
缺乏文档是一件令人头疼的事。