小编pet*_*ine的帖子

如何使用HTTP标头发送非英语unicode字符串?

我是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中以正确的形式保存字符串

python unicode google-app-engine http-headers ios

20
推荐指数
2
解决办法
8484
查看次数

MPMusicPlayerController:当iPod App在后台终止时,iPod停止发送通知

我正在使用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)

但无法收到任何通知

我的问题是:

  1. 有没有办法重新分配,在运行时重新加载指针?如何恢复属性,就像它首次启动时一样?
  2. 我怎么能抓住这个消息:"MediaPlayer:Message playbackState超时." 在控制台输出?这与使用NSLog不同.

感谢你们对我的帮助.

更新: 似乎使用assignweak用于ipodPlayer属性是解决方案.此外,访问它是在假设该属性可能不存在的情况下完成的.经过多次试验和一年在我的应用程序中实际使用它,我认为这是正确的解决方案.

crash notifications background mpmusicplayercontroller ios

10
推荐指数
1
解决办法
1896
查看次数

如何在Xcode项目包中排除图像文件,有条件地发布版本?

我将.png图像添加到Xcode项目中以进行条件使用,例如制作视图的屏幕截图但是,由于应用程序的发布版本不需要这样,我想找到一种方法来使用Target的某种设置来排除它们.我希望可以有一个解决方案,如使用#if DEBUG宏进行Debug编译,这可以适用于源代码行.但是,如果项目包中包含文件,我很难找到答案.

xcode bundle build project ios

10
推荐指数
1
解决办法
5021
查看次数

核心数据可转换属性不适用于NSPredicate

我经常使用TransformableCore Data attributes,所以以后我可以改变它们.

但是,似乎,如果我想用来NSPredicate查找NSManagedObject,使用"uniqueKey == %@",或者"uniqueKey MATCHES[cd] %@"它不能正常工作.

它总是错过匹配的对象,直到我将匹配对象的uniqueKey的属性更改为具有类似的特定类NSString,或NSNumber.

有人可以解释使用的限制NSPredicateTransformable属性?

xcode core-data nspredicate ios transformable

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

应该是EXPLICITLY调用willMoveToParentViewController:(UIViewController*)parent&didMoveToParentViewController:(UIViewController*)parent?

WWDC 2012会议上标题为iOS上的视图控制器的演变, - (void)willMoveToParentViewController:(UIViewController *)parent并且- (void)didMoveToParentViewController:(UIViewController *)parent已经提到在视图转换的自定义容器实现中使用.

如果我没有弄错的话,似乎需要在之前或之后明确地调用这些方法- (void)removeFromSuperview- (void)addSubview:(UIView *)view

但是,当我在子类实现中记录它们时,它表明它们被称为IMPLICITLY.他们已经被自动调到了正确的位置.

所以,如果真的需要明确调用这些方法,就像在WWDC会话中指示的那样,我有点困惑,或者可以不遵循它并清除不必要的代码行.

transition uiviewcontroller uiview wwdc ios

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

应该将viewDidUnload中的哪些内容移动到didReceiveMemoryWarning?

在新的iOS 6中,viewDidUnload不推荐使用,我们已被指示使用它didReceiveMemoryWarning来管理UIViewController实例和子类中的对象.将nils分配给内部的UIView didReceiveMemoryWarning类似于内部的方式同样有效viewDidUnload吗?

我问这个是因为这两种方法似乎有所不同.似乎didReceiveMemoryWarning不能保证viewDidLoad再次调用以重新实例化任何必要的UIViews.

我怀疑在iOS 6中,内存管理完成后无需手动解除分配UIView.请帮助我了解在理解UIViewController的生命周期时我错过了什么.

uiviewcontroller didreceivememorywarning ios viewdidunload ios6

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

如何在响应用户交互时运行重复的NSTimer或计划进程

我用的时候

[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,但我需要使用预定的重复过程.

我怀疑答案可能实际上是一个简单的答案,但找不到它

background-process nstimer ios

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