如果你有一个带有三个NSDictionarys的NSMutableArray,如下所示:
{
name:steve, age:40;
name:steve, age:23;
name:paul, age:19
}
Run Code Online (Sandbox Code Playgroud)
如何将其转换为只有两个字符串的数组{steve,paul}.换句话说,来自原始NSMutableArray的唯一名称?有没有办法使用块来做到这一点?
cocoa-touch nsdictionary nsmutablearray ios objective-c-blocks
我有两个要素:
NSMutableArray* mruItems;
NSArray* mruSearchItems;
Run Code Online (Sandbox Code Playgroud)
我有一个基本上UITableView保持mruSearchItems,并且一旦用户滑动并删除特定行,我需要在其中找到该字符串的所有匹配mruItems并从那里删除它们.
我没有充分使用NSMutableArray,我的代码由于某些原因给了我错误:
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
//add code here for when you hit delete
NSInteger i;
i=0;
for (id element in self.mruItems) {
if ([(NSString *)element isEqualToString:[self.mruSearchItems objectAtIndex:indexPath.row]]) {
[self.mruItems removeObjectAtIndex:i];
}
else
{
i++;
}
}
[self.searchTableView reloadData];
}
Run Code Online (Sandbox Code Playgroud)
}
错误:我现在看到一些字符串不在引号之间(UTF8中的字符串是)
Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <__NSArrayM: 0x1a10e0> was mutated while being enumerated.(
"\U05de\U05e7\U05dc\U05d3\U05ea",
"\U05de\U05d7\U05e9\U05d1\U05d5\U05df", …Run Code Online (Sandbox Code Playgroud) 我有一点问题,我需要帮助.
我想循环遍历一个多维数组,每次我找到一个密钥ex的值."name"等于ex."你好".我想将该数组对象复制到另一个数组中.
我怎么做?
我有一个像这样的NSMutableArray:
(
{
City = "Orlando";
Name = "Shoreline Dental";
State = Florida;
},
{
City = "Alabaster ";
Name = Oxford Multispeciality;
State = Alabama;
},
{
City = Dallas;
Name = "Williams Spa";
State = Texas;
},
{
City = "Orlando ";
Name = "Roast Street";
State = Florida;
}
)
Run Code Online (Sandbox Code Playgroud)
现在,我如何对这个NSMutableArray进行排序,以获得与我希望获得的状态"佛罗里达"相对应的结果
(
{
City = "Orlando";
Name = "Shoreline Dental";
State = Florida;
},
{
City = "Orlando ";
Name = "Roast Street";
State = Florida;
} …Run Code Online (Sandbox Code Playgroud) 我有一个包含多个NSMutableDictionary对象的数组.
每次填写文本字段并按下提交按钮:
//The strings
NSString *dateString = @"Date";
NSString *timeString = @"Time";
NSString *typeString = @"Type";
- (IBAction)addData:(id)sender {
[_myDictionary setObject:_dateLabel.text forKey:dateString];
[_myDictionary setObject:_nNumber.text forKey:timeString];
[_myDictionary setObject:_type.text forKey:typeString];
[_myArray addObject:_myDictionary];
[self display]
}
Run Code Online (Sandbox Code Playgroud)
然后我试图在UItextView中显示结果(在这个例子中是日期),但我不知道如何.
-(void)displayData{
for (int i = 0; i<_myArray.count; i++) {
[_myArray objectAtIndex:i];
outputString = [outputString stringByAppendingFormat:@"%@\n",[_myDictionary objectForKey:@"Date"]];
}
_myTextView.text = [NSString stringWithFormat:@"%@",outputString];
}
Run Code Online (Sandbox Code Playgroud)
这最终显示数组中最后一个Dictionary的日期.我甚至无法弄清楚如何从特定的字典中记录日期.
说[_myArray objectAtIndex:3] [_myDictionary objectForKey:@"Date"].我如何记录第三个索引的日期?
希望这是有道理的
EDIT SOLUTION
for (int i = 0; i<_myArray.count; i++)
{
outputString = [outputString stringByAppendingFormat:@"%@ …Run Code Online (Sandbox Code Playgroud) 我有一个NSMutableArray我初始化的viewDidLoad:
self.titlesTagArreys = [@[@"Dollar", @"Euro", @"Pound",@"Dollar longString", @"Euro longStringlongString", @"Pound",@"Dollar", @"Euro", @"PoundlongStringlongString"]mutableCopy];
Run Code Online (Sandbox Code Playgroud)
在.h:
@property(nonatomic, copy) NSMutableArray* titlesTagArreys;
Run Code Online (Sandbox Code Playgroud)
当我尝试删除一个项目时,应用程序崩溃:
-(void)removeButtonWasPressed:(NSString*)tagTitle{
NSLog(@"tagTitle - %@",tagTitle);
NSLog(@"self.titlesTagArreys - %@",self.titlesTagArreys);
[self.titlesTagArreys removeObject:tagTitle];
}
Run Code Online (Sandbox Code Playgroud)
这是日志:
2013-08-06 16:15:03.989 EpicTv[6378:907] tagTitle - Dollar
2013-08-06 16:15:03.991 EpicTv[6378:907] self.titlesTagArreys - (
Dollar,
Euro,
Pound,
"Dollar longString",
"Euro longStringlongString",
Pound,
Dollar,
Euro,
PoundlongStringlongString
)
[__NSArrayI removeObject:]: unrecognized selector sent to instance 0x1c53bbd0
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayI removeObject:]: unrecognized selector sent to …Run Code Online (Sandbox Code Playgroud) 我有一个NSMutableArray的UIViews,我把在UIScrollView其负责将它们按顺序.现在我有这个代码用于互换两个UIViews位置:
UIView *viewToBeChanged = [views objectAtIndex:self.page];
UIView *previousView = [views objectAtIndex:previousPage];
[views removeObjectAtIndex:self.page];
[views removeObjectAtIndex:previousPage];
[views insertObject:viewToBeChanged atIndex:previousPage];
[views insertObject:previousView atIndex:self.page];
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来改变NSMutableArray另一个对象的位置?谢谢!
在GitHub我有一个简单的iPhone应用程序,它从社交网络Mail.ru获取用户信息(通过使用OAuth):

它确实获取并打印信息,但随后崩溃.
作为一个iOS编程新手,我对下面的输出感到困惑(也请看看PasteBin的完整输出):
2014-01-21 21:21:10.873 oauthMailru[8228:3307] -[__NSArrayM objectForKeyedSubscript:]: unrecognized selector sent to instance 0x8a97290
2014-01-21 21:21:10.875 oauthMailru[8228:3307] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayM objectForKeyedSubscript:]: unrecognized selector sent to instance 0x8a97290'
*** First throw call stack:
(
0 CoreFoundation 0x01aa65e4 __exceptionPreprocess + 180
1 libobjc.A.dylib 0x018298b6 objc_exception_throw + 44
2 CoreFoundation 0x01b43903 -[NSObject(NSObject) doesNotRecognizeSelector:] + 275
3 CoreFoundation 0x01a9690b ___forwarding___ + 1019
4 CoreFoundation 0x01a964ee _CF_forwarding_prep_0 + 14
5 oauthMailru 0x00003a62 __47-[ViewController fetchMailruWithToken:ForUser:]_block_invoke …Run Code Online (Sandbox Code Playgroud) 我有一些场景,我可能有一个包含几个单词的NSString,其中一些是重复的.我想要做的是采取一个看起来像这样的字符串:
One Two Three Three Three Two Two Two One One Two Three
Run Code Online (Sandbox Code Playgroud)
并使它看起来像:
One Two Three
Run Code Online (Sandbox Code Playgroud)
可能有时候原始NSString的确切长度也不同.到目前为止我所拥有的是:
NSString *hereitis = @"First Second Third Second Third First First First";
NSArray *words = [hereitis componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
NSCountedSet *countedSet = [NSCountedSet setWithArray:words];
NSMutableArray *finalArray = [NSMutableArray arrayWithCapacity:[words count]];
for(id obj in countedSet) {
if([countedSet countForObject:obj] == 1) {
[finalArray addObject:obj];
}
}
NSString *string = [finalArray componentsJoinedByString:@" "];
NSLog(@"String%@", string);
Run Code Online (Sandbox Code Playgroud)
但是,这只是在我的数组中返回String,而不是任何单词.
看起来我们无法将varSwift中的空数组转换为Objc中的NSMutableArray.
var adultTravelerModels: [TravelerDataModel] = []
BookDataManger.sharedInstance().arraySelectedAdultPassenager = adultTravelerModels as! NSMutableArray
/* (lldb) po adultTravelerModels
0 elements */
Run Code Online (Sandbox Code Playgroud)
系统版本为iOS 11.0,Xcode 9.0.
我们怎么解决这个问题?
nsmutablearray ×10
ios ×9
objective-c ×5
cocoa-touch ×2
iphone ×2
nsarray ×2
ios5 ×1
nsdictionary ×1
nsstring ×1
swift ×1
uikit ×1
xcode ×1
xcode4.5 ×1