我有一个NSMutableArray组成的NSStrings.当我需要对它进行排序时,我使用的[array sortUsingSelector:@selector(caseInsensitiveCompare:)]是完美的.
但有时我需要通过NSStrings 的子串对数组进行排序.在这种情况下,子串被定义为NSString跟随某个标记的一部分.事实上,标记可以在每个字符串中以不同方式定位.
显然,我可以NSString分成两个对象并对它们进行排序,但这需要进行重大更改.
有没有办法使用类似于我上面描述的选择器进行排序?
我想如果没有,那么我可以通过创建一个数组的排序副本(而不是使用选择器来完成它),然后释放原始数据.
Objective C中有哪些内容? @"%@" @"%d" @"%i"
我想搜索属性description(NSString实例)中是否有给定的单词.
我试过这个谓词:
[NSPredicate predicateWithFormat:@"description CONTAINS[cd] %@", theWord];
Run Code Online (Sandbox Code Playgroud)
它有效,但它也找到了子词.
例如,给定theWord:
汽车
它也将是这个description:
圣诞颂歌
相反,我希望我的谓词只匹配a,或者christmas,或者carol.
(我正在使用Core Data和NSFetchRequest.)
我有一个NSString可以在字符串之间有多个\n.我需要用单个\n替换\n的多次出现.
我试过这段代码:
newString = [string stringByReplacingOccurrencesOfString:@"\n\n" withString:@"\n"];
Run Code Online (Sandbox Code Playgroud)
但是,如果在字符串中遇到一系列"\n \n \n \n \n \n",则无法获得所需的结果.在这种情况下,它们将被替换为"\n \n \n".
我应该怎么做才能将所有多个"\n"替换为单个"\n"?
谢谢大家!
更新:添加UITextView过滤后的字符串设置为文本的屏幕截图.根据Attila H的回答,在编写代码后,新行似乎不止一行.

我正在尝试使用CFStringTransform将以俄语输入的名称音译为安全的ASCII信用卡处理.然而,当剥离变音符号č变成ac时,这实际上不是一个好的音译.无论如何我可以使用CFStringTransform,没有变音符号吗?换句话说,ч,应该返回ch,因为它应该在几乎所有标准http://en.wikipedia.org/wiki/Romanization_of_Russian中
NSMutableString *name = [@"????????" mutableCopy];
CFMutableStringRef nameRef = (__bridge CFMutableStringRef)name;
CFStringTransform(nameRef, NULL, kCFStringTransformToLatin, false); //name is roman?uk
CFStringTransform(nameRef, NULL, kCFStringTransformStripCombiningMarks, false); //name is now romancuk
Run Code Online (Sandbox Code Playgroud) 所以我有以下代码导致XCode中的运行时错误
NSString* temp = [[param objectforkey@"firstParam"] stringValue];
int tempNum = [[param objectforkey@"secondParam"] intValue];
Run Code Online (Sandbox Code Playgroud)
param从plist加载.firstParam是字符串,secondParam是数字
第一行崩溃了程序.
现在有趣的是,如果我做了一个艰苦的种姓,它是有效的,即:
NSString* temp = (NSString*)[param objectforkey@"firstParam"];
int tempNum = [[param objectforkey@"secondParam"] intValue];
Run Code Online (Sandbox Code Playgroud)
只是想知道为什么id会有不一致的实现,因为我必须使用intValue来转换为int,但是必须进行硬转换以获得NSString?为什么不stringValue?
如何检测NSString是否包含特定单词,例如is.
如果NSString是Here is my string. His isn't a mississippi isthmus. It is...?该方法应检测单词is并返回YES.
但是,如果NSString是His isn't a mississipi isthmus,它应该返回NO.
我尝试过使用,if ([text rangeOfString:@"is" options:NSCaseInsensitiveSearch].location != NSNotFound) { ... }但它检测的字符不是单词.
在我的应用程序中,我将电话号码作为用户的输入.号码应采用美国格式.我想动态地显示它(555)-888-888.例如,当用户在达到4位时开始输入数字时,它显示如下的数字(555)-4,依此类推.我试过replaceString方法,但我发现它不起作用.
好的,所以我知道格式字符串不是字符串文字警告,但我不知道为什么它出现在NSRunAlertPanel上,定义是:
APPKIT_EXTERN NSInteger NSRunAlertPanel(NSString*title,NSString*msgFormat,NSString*defaultButton,NSString*alternateButton,NSString*otherButton,...)NS_FORMAT_FUNCTION(2,6);
报告错误时,我通常只在消息上传递error.localizedDescription,例如:
NSRunAlertPanel(@"error", err.localizedDescription, @"OK",nil,nil);
Run Code Online (Sandbox Code Playgroud)
但升级到xcode 5.1后,我开始收到此警告.
所以我尝试过这样的事情:
NSRunAlertPanel(@"error", [NSString stringWithFormat:@"%@", err.localizedDescription], @"OK", nil, nil);
Run Code Online (Sandbox Code Playgroud)
和它的情况一样.任何人有任何想法如何解决这个问题?
使用Objective-C时,我们通常使用以下代码来获取详细信息
NSString *firstName = (__bridge_transfer NSString *)ABRecordCopyValue(contactPerson, kABPersonFirstNameProperty);
Run Code Online (Sandbox Code Playgroud)
在Swift中我尝试了以下内容
var firstName : NSString = ABRecordCopyValue(contactPerson, kABPersonFirstNameProperty).takeUnretainedValue() as NSString
Run Code Online (Sandbox Code Playgroud)
而且由于错误,我无法构建
Bitcast requires both operands to be pointer or neither %224 = bitcast %objc_object* %223 to %PSs9AnyObject_, !dbg !486 Bitcast requires both operands to be pointer or neither %225 = bitcast %PSs9AnyObject_ %224 to i8*, !dbg !486 LLVM ERROR: Broken function found, compilation aborted! Command /Applications/Xcode6-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift failed with exit code 1
nsstring ×10
objective-c ×6
ios ×5
cocoa-touch ×2
casting ×1
cocoa ×1
core-data ×1
cyrillic ×1
iphone ×1
nsdictionary ×1
nspredicate ×1
string ×1
swift ×1
xcode ×1