所以我得到了以下操作:
NSInteger articleIndex = self.featuredArticlesCounter % self.featuredArticles.count;
Run Code Online (Sandbox Code Playgroud)
在这种情况下,self.featuredArticlesCounter为-1,
self.featuredArticles.count为10
所以它基本上是-1%10,应该是9,但结果是5.
谷歌称这是9.
如果我这样做NSInteger articleIndex = -1 % 10;会给我-1
我已经尝试将NSUInteger从count转换为NSInteger,但这不起作用.我试过在所有地方插入括号,但这也不起作用.
我已经切换到使用了((-1 % 10) + 10) % 10.
但我仍然想知道这笔交易是什么.有任何想法吗?
编辑:
featuredArticlesCounter是一个签名的int
self.featuredArticles.count是一个unsigned int
如果我有
class Info {
var name: String?
}
class User {
var info: Info?
}
class WrappedClass {
var user: User = User()
}
let nameKeyPath = \WrappedClass.user.info?.name //Gets me KeyPath
let referencedNameKeyPath = \WrappedClass.user.info!.name //Gets me ReferenceWritableKeyPath
Run Code Online (Sandbox Code Playgroud)
nameKeyPath给我一个KeyPath我以后不能用来修改名称值的,但是如果我强制解开它,我会得到一个ReferenceWritableKeyPath我想要的。
不幸的是referencedNameKeyPath,由于意外发现 nil,沿线使用nil 值预计会崩溃。
我的问题是有没有办法将 a 转换KeyPath为 aReferenceWritableKeyPath或以某种方式解开它?
所以我在我的应用程序中使用自定义声音实现了推送通知.
我的应用程序播放推送通知没有问题.
我的问题是,在安装应用程序后可以下载自定义声音并使用自定义推送通知系统播放它们吗?
因为它们应该出现在主要包中并且只读 - 有另一种方法可以实现吗?
谢谢.