我知道,我必须将其设置AudioSession为"播放"类别,即使静音开关打开也允许音频.这就是我的工作,但开关打开时声音仍然静音.
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory,sizeof(sessionCategory), &sessionCategory);
SystemSoundID soundID;
NSString *path = [[NSBundle mainBundle] pathForResource:soundString ofType:@"wav"];
AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:path],&soundID);
AudioServicesPlaySystemSound (soundID);
Run Code Online (Sandbox Code Playgroud)
编辑:顺便说一句,该应用程序是一个声音垫.播放声音是该应用程序的唯一目的.以下是Apple Doc对此的说法:
将此类别用于音频播放最重要的应用程序.即使屏幕已锁定且Ring/Silent开关设置为静音,您的音频也会播放.
编辑2:打开静音开关,声音甚至无法通过耳机播放.我知道用户是王道.我知道静音开关有它的用途.这不是问题.我试图得到一个答案,即将AudioSession类别设置为kAudioSessionCategory_MediaPlayback没有预期的结果.
编辑3:按照Jonathan Watmough的建议,我设置了AudioServices kAudioServicesPropertyIsUISound房产,但仍然没有运气.我错过了什么吗?
// set the session property
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory,sizeof(sessionCategory), &sessionCategory);
// creates soundID
SystemSoundID soundID;
NSString *path = [[NSBundle mainBundle] pathForResource:soundString ofType:@"wav"];
AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:path],&soundID);
// Jonathan Watmough suggestion
UInt32 flag = 0;
AudioServicesSetProperty(kAudioServicesPropertyIsUISound, sizeof(UInt32), &soundID, sizeof(UInt32), &flag);
AudioServicesPlaySystemSound (soundID);
Run Code Online (Sandbox Code Playgroud) iOS 5终于添加了一个moveRowAtIndexPath:toIndexPath:方法UITableView.问题是,调用它只会移动行,它不会更新/重绘它.这样做的唯一方法似乎是找到单元格并直接调用setNeedsDisplay.但这很棘手,因为你永远不知道细胞是否已被移动.
我也无法调用reloadRowsAtIndexPaths:,因为我不允许将2个动画应用于同一个beginUpdates-endUpdates块内的单个行.
我可以想到一些可行的解决方法,比如将整个事物分成2个动画块.但我想知道我是否遗漏了一些东西,因为整个行为对我来说似乎很奇怪.
我有一个UIScrollView,我正在调用scrollRectToVisible:animated:YES就可以了.我想设置动画的速度.可以这样做吗?
我有这种奇怪的崩溃,只有在设备上运行应用程序时才会发生(在模拟器中不会发生).看起来这个问题无处不在,因为我没有改变那个特定的类.几天前我遇到了同样的问题,最后我通过复制类,重命名它,更改引用的类来修复它 - 我没有改变过一段代码.
所以我试图理解它为什么这样做.我读过某个地方,当对象不是子类时NSObject(通常是!),通常会出现此控制台错误.这是确切的控制台错误消息:
*** NSInvocation: warning: object 0x679e0 of class 'FFProximityPickerView' does not implement methodSignatureForSelector: -- trouble ahead
*** NSInvocation: warning: object 0x679e0 of class 'FFProximityPickerView' does not implement doesNotRecognizeSelector: -- abort
Run Code Online (Sandbox Code Playgroud)
然后它崩溃了.
我非常感谢任何可以帮助我的人.
编辑----------------
我发布此问题后发生了两次.在第一种情况下,我重新将类添加到项目中,不再崩溃.在第二种情况下,我修复了崩溃的类中的所有警告并解决了它.会继续观看,但到目前为止我的猜测是我没有修复警告(我总是倾向于立即修复它们)
Twitter for iPad推出了一种新的浏览内容方式.有没有人猜测这些滑动面板是如何管理的?它UIScrollView有一大堆UITableViews吗?还是一堆UIViewControllers滑在一起?或者是其他东西?你打赌什么?
我正在从数据库查询公交车站,我希望每个公交线路/方向只返回1站.这个查询只是这样:
Stop.select("DISTINCT line_id, direction")
Run Code Online (Sandbox Code Playgroud)
除了它不会给我任何其他属性而不是那些2.我尝试了几个其他查询让它返回id除了line_id和direction字段(理想情况下它将返回所有列),没有运气:
Stop.select("DISTINCT line_id, direction, id")
Run Code Online (Sandbox Code Playgroud)
和
Stop.select("DISTINCT(line_id || '-' || direction), id")
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,查询都会丢失其distinct子句,并返回所有行.
一些很棒的家伙帮助我,并建议使用子查询让它返回所有的ID:
Stop.find_by_sql("SELECT DISTINCT a1.line_id, a1.direction, (SELECT a2.id from stops a2 where a2.line_id = a1.line_id AND a2.direction = a1.direction ORDER BY a2.id ASC LIMIT 1) as id FROM stops a1
Run Code Online (Sandbox Code Playgroud)
然后,我可以提取所有ID并执行第二个查询以获取每个停靠点的完整属性.
有没有办法在1个查询中拥有它并让它返回所有属性?
我有2种颜色:1种动态设置,另一种颜色始终为0.5 alpha.我想计算得到的白色,就像使用叠加混合模式在动态颜色上绘制一样.
我知道Overlay结合了Multiply和Screen混合模式.
乘法混合模式的公式是:
Result Color = (Top Color) * (Bottom Color) /255
Run Code Online (Sandbox Code Playgroud)
屏幕混合模式是:
Result Color = 255 - [((255 - Top Color)*(255 - Bottom Color))/255]
Run Code Online (Sandbox Code Playgroud)
如何计算叠加混合模式的结果颜色?
是否有UIColor开箱即用的扩展类?
考虑通过5k +条目存储过滤以下2个谓词:
predicate1 = [NSPredicate predicateWithFormat:@"hidden == NO AND name BEGINSWITH[cd] %@", searchString];
predicate2 = [NSPredicate predicateWithFormat:@"name BEGINSWITH[cd] %@", searchString];
Run Code Online (Sandbox Code Playgroud)
我打开-com.apple.CoreData.SQLDebug后看到了获取请求的次数:
谓词1:0.4728s
谓词2:0.0867s
我错过了什么吗?两列都已编入索引.为什么添加一个简单的布尔检查会减慢获取请求的速度呢?
编辑:根据要求,输出:
CoreData: sql: SELECT 0, t0.Z_PK, t0.Z_OPT, t0.ZHIDDEN, t0.ZID, t0.ZNAME, t0.ZRANK FROM ZARTISTINDEX t0 WHERE ( t0.ZHIDDEN = ? AND ( NSCoreDataStringSearch( t0.ZNAME, ?, 393, 0) OR NSCoreDataStringSearch( t0.ZNAME, ?, 393, 0))) ORDER BY t0.ZRANK DESC LIMIT 14
Run Code Online (Sandbox Code Playgroud)
该rank列也被编入索引.我需要此请求超过0.5秒的原因是它用于自动完成功能.每次用户更改某个文本字段的值时,都会发出该请求.
编辑2:添加更多上下文信息:
- (NSArray*)autocompleteSuggestions:(NSString*)searchString {
NSFetchRequest *request = [[NSFetchRequest alloc] init]; …Run Code Online (Sandbox Code Playgroud) 我有一堆艺术家存储在CoreData中,并希望按名称对它们进行排序,但忽略前缀"the".因此,例如"甲壳虫乐队"将被归类为"甲壳虫乐队",有点像iTunes/iPod所做的那样.
所以我尝试cleanName在Artist模型中添加一个自定义属性,以便它可以用于排序:
NSSortDescriptor *sortByName = [[NSSortDescriptor alloc] initWithKey:@"cleanName" ascending:YES];
Run Code Online (Sandbox Code Playgroud)
这显然会降低应用程序,因为cleanName它不是SQLEntity的属性:
...keypath cleanName not found in entity <NSSQLEntity Artist id=1>
Run Code Online (Sandbox Code Playgroud)
我知道我可以在商店中保存cleanName,但这对我来说似乎不对.一个新的属性只是将名称剥离了"the"前缀?真?
所以相反,我尝试使用自定义compareObject:toObject:implementation来子类化NSSortDescriptor:
- (NSComparisonResult)compareObject:(Artist*)artist1 toObject:(Artist*)artist2 {
NSString *cleanString1 = [artist1.name stringByReplacingOccurrencesOfString:@"the " withString:@"" options:NSCaseInsensitiveSearch range:NSMakeRange(0, [artist1.name length])];
NSString *cleanString2 = [artist2.name stringByReplacingOccurrencesOfString:@"the " withString:@"" options:NSCaseInsensitiveSearch range:NSMakeRange(0, [artist2.name length])];
return [artist1.cleanName compare:artist2.cleanName options:NSCaseInsensitiveSearch];
}
Run Code Online (Sandbox Code Playgroud)
当我添加一位新艺术家,将"披头士乐队"添加到我的商店时,这就有效.艺术家被分类为"披头士乐队"并显示在我的"B"部分内.但是一旦我退出应用程序并重新启动它,我就会收到以下错误,并且tableview只保持空白:
sectionIndex A for Apparat
sectionIndex B for Bonobo
sectionIndex M for Misteur Valaire
sectionIndex M for Moderat
sectionIndex P for Paul Kalkbrenner
sectionIndex …Run Code Online (Sandbox Code Playgroud) 来自Apple的核心数据编程指南:
您应该为每个线程提供它自己的完全私有的托管对象上下文,并保持它们的关联对象图在每个线程的基础上分开.
如何扩展到Grand Central Dispatch,你完全无法控制线程,这些线程是代表你自动创建的?
我现在这样做的方法是NSManagedObjectContext为每个调度队列分配一个,但事情就是这样:调度队列不一定每次都使用相同的线程,对吧?
iphone ×7
core-data ×3
uiscrollview ×2
activerecord ×1
audio ×1
audiosession ×1
blending ×1
colors ×1
crash ×1
drawing ×1
ios ×1
ios5 ×1
ipad ×1
navigation ×1
postgresql ×1
sorting ×1
tableview ×1
uitableview ×1