相关疑难解决方法(0)

使用Objective C/Cocoa来取消unicode字符,即\ u1234

我从中获取数据的一些站点返回UTF-8字符串,其中UTF-8字符被转义,即: \u5404\u500b\u90fd

是否有内置的可可功能可能有助于此,或者我必须编写自己的解码算法.

unicode cocoa objective-c

34
推荐指数
3
解决办法
2万
查看次数

NSJSONSerialization导致EXC_BAD_ACCESS

目前我正在编写一个应用程序(目标iOS 6,启用了ARC),它使用JSON进行数据传输,使用Core Data进行持久存储.JSON数据由PHP脚本通过json_encode从MySQL数据库生成.

我的问题是,对于某些表中的数据,以下代码失败:

- (NSDictionary *)executeFetch:(NSString *)query
{
    NSURL *requesturl = [NSURL URLWithString:[query stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

    NSError *dataError = nil;
    self.jsonData = [NSData dataWithContentsOfURL:requesturl options:kNilOptions error:&dataError];

    NSError *error = nil;
    self.jsonSerializationResult = [NSJSONSerialization JSONObjectWithData:self.jsonData options:NSJSONReadingMutableContainers|NSJSONReadingMutableLeaves error:&error];

    return self.jsonSerializationResult;

}
Run Code Online (Sandbox Code Playgroud)

该程序总是在EXC_BAD_ACCESS错误的位置崩溃,它表示self.jsonSerializationResult和Instruments说有一个Zombie被检测到.我知道这意味着我发送消息的一些对象是零,但我无法找到如何解决它...这就是乐器所说的:

#   Address Category    Event Type  RefCt   Timestamp   Size    Responsible Library Responsible Caller
0   0xa1b8a70   CFString (mutable)  Malloc  1   00:01.603.081   32  Foundation  -[NSPlaceholderMutableString initWithBytesNoCopy:length:encoding:freeWhenDone:]
1   0xa1b8a70   CFString (mutable)  Release 0   00:01.603.137   0   Foundation  newJSONValue
2   0xa1b8a70   CFString (mutable)  Zombie  -1  00:01.603.259   0 …
Run Code Online (Sandbox Code Playgroud)

xcode json exc-bad-access nsjsonserialization ios6

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

unicode在objective-c中逃脱

我有一个字符串"Artîsté".我在PHP上使用json_encode,然后得到"Art\u00eest\u00e9".

如何将其转换为NSString?我尝试了很多东西而且没有一个能够工作我总是得到Artîsté

For Example:
NSString stringWithUTF8String:"Art\u00c3\u00aest\u00c3\u00a9"];//Artîsté
@"Art\u00c3\u00aest\u00c3\u00a9"; //Artîsté
Run Code Online (Sandbox Code Playgroud)

unicode objective-c

5
推荐指数
1
解决办法
4451
查看次数

保存在Core Data中后字符串长度更改

所以这是一个问题.

我有一个字符串

    ????? ????-0.fb2
Run Code Online (Sandbox Code Playgroud)

NSString方法长度返回16

在Core Data中保存字符串后(后端--sqlite)

NSString方法的长度返回17,但在视觉上字符串保持不变

    ????? ????-0.fb2
Run Code Online (Sandbox Code Playgroud)

显然方法是isEqualToString:返回NO

花了很多时间在实验中,我很遗憾这个问题是这封信:

    ?
Run Code Online (Sandbox Code Playgroud)

删除此信解决问题.

但它让我疯狂,为什么会发生这样的事情?

这里的解决方法有效,但不满足我:

  1. stringByReplacingPercentEscapesUsingEncoding: - 需要在db查询中和之后转换字符串
  2. 音译整个字符串 - 有点黑客

以及dosnt工作的解决方法:

  1. stringWithUTF8String
  2. 将转义的UTF8字符转换回原始格式

在Core Data中保存后,请帮助我了解字符串发生了什么.

还有更优雅的解决方案吗?

core-data objective-c nsstring nsstringencoding

5
推荐指数
1
解决办法
543
查看次数

以正确的格式在控制台中显示unicode

NSSet *subFolders = [_account subscribedFolders];
NSLog(@"subFolders: %@",subFolders);
Run Code Online (Sandbox Code Playgroud)

输出:

...
    "[Gmail]/\U05d8\U05d9\U05d5\U05d8\U05d5\U05ea",
    "[Gmail]/\U05d7\U05e9\U05d5\U05d1" 
...
Run Code Online (Sandbox Code Playgroud)

有什么方法可以用原始语言(希伯来语)显示上述文字吗?

我试过的事情:

  • 将调试器从LLDB更改为GDB - 无效
  • 检查首选项 - >文本编辑选择UTF-*

谢谢

xcode cocoa cocoa-touch objective-c ios

5
推荐指数
1
解决办法
1759
查看次数