【发布时间】:2011-04-17 23:20:24
【问题描述】:
如何从 NSString 对象中捕获第一行?
我目前正在将整个 NSString 对象分配给我的 textView 的标题,但只想分配字符串的第一行。我目前的代码是这样的:
self.textView.text = [[managedObject valueForKey:@"taskText"] description];
【问题讨论】:
标签: iphone objective-c ios
如何从 NSString 对象中捕获第一行?
我目前正在将整个 NSString 对象分配给我的 textView 的标题,但只想分配字符串的第一行。我目前的代码是这样的:
self.textView.text = [[managedObject valueForKey:@"taskText"] description];
【问题讨论】:
标签: iphone objective-c ios
你想要
self.textView.text = [[[[managedObject valueForKey: @"taskText"] description] componentsSeparatedByString: @"\n"] objectAtIndex:0];
【讨论】:
-componentsSeparatedByString: 返回一个NSArray 实例,您不能使用C 数组[] 语法。您需要改为发送-objectAtIndex:。
-componentsSeparatedByCharactersInSet: 和+[NSCharacterSet newlineCharacterSet]。
如果您的目标是 iOS 4.0 及更高版本,您可以使用-[NSString enumerateLinesUsingBlock:]:
__block NSString *firstLine = nil;
NSString *wholeText = [[managedObject valueForKey:@"taskText"] description];
[wholeText enumerateLinesUsingBlock:^(NSString *line, BOOL *stop) {
firstLine = [[line retain] autorelease];
*stop = YES;
}];
self.textView.text = firstLine;
【讨论】:
一种可能是最有效和最直接的替代方法:
NSString* str = [[managedObject valueForKey:@"taskText"] description];
self.textView.text = [str substringWithRange:[str lineRangeForRange:NSMakeRange(0, 0)]];
【讨论】: