我是HTTP相关事务的新手.我的问题是在iOS开发中,我想使用HTTP Header发送一个字符串,所以我正在使用:
[httpRequest setValue:@"nonEnglishString" forHTTPHeaderField:@"customHeader"];
Run Code Online (Sandbox Code Playgroud)
接收服务器是Python(Google App Engine),使用以下命令将数据库中的字符串值保存为StringProperty:
dataEntityInstance.nonEnglishString = unicode(self.request.headers.get('customHeader')
Run Code Online (Sandbox Code Playgroud)
但问题是,当我尝试发送像韩语这样的非英语字符串时,它会保存在HTTP标头中,如下所示:
Customheader = "\Uc8fc\Uba39\Uc774 \Uc6b4\Ub2e4";
Run Code Online (Sandbox Code Playgroud)
当它被Google App Engine收到并保存在DataStore中时,它会改为:
??? ??
Run Code Online (Sandbox Code Playgroud)
好像它找不到unicode值的正确字符.
使用HTTP标头发送非英语字符串是不可能的还是允许的?
如果我的iOS只使用setHTTPBody,它可以传输非英文字符串并正确保存到App Engine的DataStore.
[httpRequest setHTTPBody:[httpBody dataUsingEncoding:NSUTF8StringEncoding]];
Run Code Online (Sandbox Code Playgroud)
但我找不到使用HTTP Headers实现相同目标的正确方法,就像Foursquare所做的许多API一样,并在基于Python的Google App Engine的DataStore中以正确的形式保存字符串
我正在使用iPod播放器控制器的音乐播放器属性.
// .h
@property (nonatomic, retain) MPMusicPlayerController *ipodPlayer;
// .m
ipodPlayer = [MPMusicPlayerController iPodMusicPlayer];
NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
[notificationCenter addObserver:self selector:@selector(changedPlaybackState:) name:MPMusicPlayerControllerPlaybackStateDidChangeNotification object:ipodPlayer];
[notificationCenter addObserver:self selector:@selector(changedNowPlayingItem:) name:MPMusicPlayerControllerNowPlayingItemDidChangeNotification object:ipodPlayer];
[ipodPlayer beginGeneratingPlaybackNotifications];
Run Code Online (Sandbox Code Playgroud)
在后台处理期间,如果终止iPod播放器应用程序,控制台将打印出:
MediaPlayer: Message playbackState timed out.
Run Code Online (Sandbox Code Playgroud)
如果它没有崩溃(或冻结,降低性能),则不再向我的观察方法发送通知.我仍然可以发送如下消息:
[ipodPlayer pause];
[ipodPlayer play];
[ipodPlayer skipToNextItem];
[ipodPlayer skipToPreviousItem];
Run Code Online (Sandbox Code Playgroud)
但无法收到任何通知
我的问题是:
感谢你们对我的帮助.
更新:
似乎使用assign或weak用于ipodPlayer属性是解决方案.此外,访问它是在假设该属性可能不存在的情况下完成的.经过多次试验和一年在我的应用程序中实际使用它,我认为这是正确的解决方案.
我将.png图像添加到Xcode项目中以进行条件使用,例如制作视图的屏幕截图但是,由于应用程序的发布版本不需要这样,我想找到一种方法来使用Target的某种设置来排除它们.我希望可以有一个解决方案,如使用#if DEBUG宏进行Debug编译,这可以适用于源代码行.但是,如果项目包中包含文件,我很难找到答案.
我经常使用Transformable的Core Data attributes,所以以后我可以改变它们.
但是,似乎,如果我想用来NSPredicate查找NSManagedObject,使用"uniqueKey == %@",或者"uniqueKey MATCHES[cd] %@"它不能正常工作.
它总是错过匹配的对象,直到我将匹配对象的uniqueKey的属性更改为具有类似的特定类NSString,或NSNumber.
有人可以解释使用的限制NSPredicate与Transformable属性?
在WWDC 2012会议上标题为iOS上的视图控制器的演变, - (void)willMoveToParentViewController:(UIViewController *)parent并且- (void)didMoveToParentViewController:(UIViewController *)parent已经提到在视图转换的自定义容器实现中使用.
如果我没有弄错的话,似乎需要在之前或之后明确地调用这些方法- (void)removeFromSuperview- (void)addSubview:(UIView *)view
但是,当我在子类实现中记录它们时,它表明它们被称为IMPLICITLY.他们已经被自动调到了正确的位置.
所以,如果真的需要明确调用这些方法,就像在WWDC会话中指示的那样,我有点困惑,或者可以不遵循它并清除不必要的代码行.
在新的iOS 6中,viewDidUnload不推荐使用,我们已被指示使用它didReceiveMemoryWarning来管理UIViewController实例和子类中的对象.将nils分配给内部的UIView didReceiveMemoryWarning类似于内部的方式同样有效viewDidUnload吗?
我问这个是因为这两种方法似乎有所不同.似乎didReceiveMemoryWarning不能保证viewDidLoad再次调用以重新实例化任何必要的UIViews.
我怀疑在iOS 6中,内存管理完成后无需手动解除分配UIView.请帮助我了解在理解UIViewController的生命周期时我错过了什么.
uiviewcontroller didreceivememorywarning ios viewdidunload ios6
我用的时候
[NSTimer scheduledTimerWithTimeInterval:intervalCountDownTimer target:self selector:@selector(updateCountDownDurationForTimer:) userInfo:nil repeats:YES];
Run Code Online (Sandbox Code Playgroud)
如果我滚动一个,它会暂停UITableView.只有在滚动停止后才会恢复.
我的tableView用于dispatch_async & dispatch_sync异步加载图像,我不确定这是否是主要原因.
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
FXDMediaItem *mediaItem = [self mediaItemAtIndexPath:indexPath];
if (mediaItem) {
dispatch_sync(dispatch_get_main_queue(), ^{
cell.imageviewAlbumArt.image = [mediaItem albumArtImage];
});
}
});
Run Code Online (Sandbox Code Playgroud)
我一直在寻找在后台模式下运行此计时器的方法,但找不到合适的解决方案.它不一定是NSTimer,但我需要使用预定的重复过程.
我怀疑答案可能实际上是一个简单的答案,但找不到它
ios ×7
xcode ×2
background ×1
build ×1
bundle ×1
core-data ×1
crash ×1
http-headers ×1
ios6 ×1
nspredicate ×1
nstimer ×1
project ×1
python ×1
transition ×1
uiview ×1
unicode ×1
wwdc ×1