我正在尝试从一个来自plist的数组中读取字符串并打印这些字符串.
数组中的字符串包含转义的UTF8字符 - 例如,"Nu\u0161a Florjan\u010di\u010d"当从plist中读取时,"NušaFlorjančič"变为.无法更改plist的内容,但我的程序需要正确显示名称.
奇怪的是,当我对字符串进行硬编码时,Objective-C似乎会自动执行此操作.但是,如果我从plist中获取字符串,则根本没有任何事情发生.
举个例子,这里有一些代码:
NSString *name1 = @"Nu\u0161a Florjan\u010di\u010d";
NSString *name2 = [list objectAtIndex:0];
NSLog(@"name 1: %@", name1);
NSLog(@"name 2: %@", name2);
Run Code Online (Sandbox Code Playgroud)
[list objectAtIndex:0]包含@"Nu\u0161a Florjan\u010di\u010d"- 唯一的区别是它是通过plist编辑器设置的.
控制台输出是:
2011-10-22 18:00:02.595 Test[13410:11c03] name 1: Nuša Florjan?i?
2011-10-22 18:00:02.595 Test[13410:11c03] name 2: Nu\u0161a Florjan\u010di\u010d
Run Code Online (Sandbox Code Playgroud)
我已经尝试过各种各样的事情,包括将字符串转换为C字符串,然后NSString使用UTF-8编码创建一个对象,但根本没有任何工作.
我真的很感激你的任何指示,这可能有助于我解决这个看似平凡的问题.
我只是在学习如何使用Combine。我有使用 Rx(RxSwift 和 RxJava)的经验,我注意到它非常相似。
然而,完全不同(有点烦人)的一件事是Publisher协议不对其Output和Failure类型使用泛型;它使用关联类型代替。
这意味着我无法指定多态Publisher类型(例如Publisher<Int, Error>)并简单地返回符合Publisher这些类型的任何类型。我需要AnyPublisher<Int, Error>改用,我被迫在eraseToAnyPublisher()所有地方都包括在内。
如果这是唯一的选择,那么我会忍受它。但是,我最近还了解了 Swift 中的不透明类型,我想知道是否可以使用它们来解决这个问题。
有没有办法,让我有,比方说,一个函数,返回some Publisher和使用的具体类型Output和Failure?
这似乎是不透明类型的完美案例,但我不知道是否有办法既使用不透明类型又指定关联类型。
我正在想象这样的事情:
func createPublisher() -> some Publisher where Output = Int, Failure = Error {
return Just(1)
}
Run Code Online (Sandbox Code Playgroud) 只是一个简短的问题.在Swift中,可以解决以下代码:
var a: String;
a = "\(3*3)";
Run Code Online (Sandbox Code Playgroud)
将解决字符串中的算术运算.但我无法弄清楚,为什么以下这种变化不起作用.
var a: String;
var b: String;
b = "3*3";
a = "\(b)";
Run Code Online (Sandbox Code Playgroud)
在这种情况下,var a中的算术运算将不会被解析.任何想法为什么以及如何才能开始工作.如果这样可行,有些事情会容易得多.谢谢你的回答.
我有一个可以调用的子类UIView CircleView.CircleView会自动将圆角半径设置为其宽度的一半,以使其成为圆形.
问题是当"CircleView"通过AutoLayout约束调整大小时......例如在设备轮换上 ......由于"cornerRadius"属性必须赶上,并且操作系统仅发送,因此在调整大小之前它会严重失真单个"边界"更改为视图的框架.
我想知道是否有人有一个好的,明确的策略来实现"CircleView"的方式在这种情况下不会扭曲,但仍然会将其内容掩盖为圆形并允许在所述UIView周围存在边框.
我试图在我的单一视图控制器项目的viewDidLoad方法中执行以下代码:
self.view.layer.frame = CGRectInset(self.view.layer.frame, 20, 20);
Run Code Online (Sandbox Code Playgroud)
但它没有给出理想的插图.但是,我在同一方法中进行的其他UI更改确实有效
self.view.layer.backgroundColor = [UIColor orangeColor].CGColor;
Run Code Online (Sandbox Code Playgroud)
上面的代码行工作,背景变为橙色,但框架没有.
只有在viewDidAppear中放置代码行时,插图才有效.如果有人能解释的话,我想了解这种行为的关键原因.先感谢您.
NSString *dateString = @"19/10/2014";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd/MM/yyyy"];
NSDate *myDate = [dateFormatter dateFromString:dateString];
Run Code Online (Sandbox Code Playgroud)
为什么myDate这个特定日期为空(2014年10月19日)?
如果我更改dateString为@"25/10/2014",请dateFormatter正确返回日期...我的代码有什么问题?
*当我的iPhone时区为"Brasilia,Brasil"时,此代码返回null.例如,当我的时区是"华盛顿特区,EUA"时,代码会返回正确的日期.
假设有一个网格包含两个墙(被阻挡的单元格)以及放置在网格上任何位置的食物.
现在假设我们正在尝试确定将蚁群放置在该网格上的最佳位置,使得蚂蚁必须行进最小距离(在任何方向上往/来自群体的起始点)以获得最大量的食物.
到目前为止,我提出的最佳方法如下:
for each square on the grid
use a shortest path algorithm to find the distance to/from each food source from this square
sum these distances to find a number and put the number in that square
select the square with the smallest number
Run Code Online (Sandbox Code Playgroud)
这种方法是否有效?有更有效的解决方案吗?
我正在处理用户使用UIBezierPath选择部分图像的图像.如何删除/清除/透明不属于该选择的所有内容?
我让我的应用程序工作正常,然后没有做任何事情,我无处不在,我有2个错误appDelegate.h.一说这个:
Objective-C方法的预期选择器
另一个说:
预期的方法体
我不知道为什么会这样,我有其他项目与完全相同的应用程序委托,他们都工作得很好.
这是我的appDelegate.h:
#import <UIKit/UIKit.h>
@interface AppDelegate : UIResponder <UIApplicationDelegate> // I get the errors here
@property (strong, nonatomic) UITabBarController *tbc;
@property(strong, nonatomic) UIWindow *window;
@end
Run Code Online (Sandbox Code Playgroud) 虽然我知道嵌套的scrollViews并不理想,但我们的设计师为我提供了这种设置,所以我尽力让它工作.让我们开始!
查看层次结构
重要的提示
我的所有视图都是使用程序化自动布局定义的.UIScrollView的子视图层次结构中的每个连续视图都对之前的视图具有y坐标依赖关系.
问题
为简单起见,让我们稍微修改一下命名法:
_outerScrollView 会参考 UIScrollView _innerScrollView 会参考 UICollectionView #2我希望我_outerScrollView将触摸事件路由到_innerScrollView其contentSize的底部.当我向后滚动时,我想反过来发生.
目前,我有以下代码:
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
CGFloat bottomEdge = [scrollView contentOffset].y + CGRectGetHeight(scrollView.frame);
if (bottomEdge >= [_outerScrollView contentSize].height) {
_outerScrollView.scrollEnabled = NO;
_innerScrollView.scrollEnabled = YES;
} else {
_outerScrollView.scrollEnabled = YES;
_innerScrollView.scrollEnabled = NO;
}
}
Run Code Online (Sandbox Code Playgroud)
其中初始条件(在任何滚动发生之前)设置为:
outerScrollView.scrollEnabled = YES;
innerScrollView.scrollEnabled = NO;
Run Code Online (Sandbox Code Playgroud)
怎么了?
在触摸视图时,outerScrollView滚动直到其底部边缘,然后具有橡皮筋效果,因为_outerScrollView.bounces = YES;如果我再次触摸视图,则innerScrollView滚动直到它到达其底部边缘.在返回的路上,相反的橡皮筋效果会以相反的顺序发生.我想要发生的是两个子视图之间的流畅运动.
显然,这是由于scrollEnabled代码片段中条件设置的条件.我想弄清楚的是如何在击中边缘时将一个scrollView的速度/速度路由到下一个scrollView.
对此问题的任何帮助将不胜感激. …
ios ×6
objective-c ×4
swift ×2
uiview ×2
algorithm ×1
cocoa-touch ×1
combine ×1
ios8 ×1
nsstring ×1
opaque-types ×1
path-finding ×1
string ×1
uiimage ×1
uiscrollview ×1
xcode ×1