类型Class不是Objective-C类型.所以将它存放到NSMutableArray外观需要特别小心.这样做的正确方法是什么?
我是一个菜鸟,试图让我的头脑使用XCode为一个非常简单的Mac应用程序组装一个非常简单的界面.
我尽可能地删除我的应用程序,以说明我遇到的障碍.
我当前的界面包含一个按钮.
在我的AppController.h文件中,我有以下内容:
@interface AppController : NSObject
{
NSMutableArray *ages;
int price;
NSString *culler;
}
-(IBAction) handleButtonClick: (NSButton*)sender;
@end
Run Code Online (Sandbox Code Playgroud)
在我的AppController.m文件中,我使用我的awakeFromNib方法来设置初始值:
-(void)awakeFromNib
{
ages = [NSMutableArray arrayWithObjects: nil];
[ages addObject: [NSNumber numberWithInt: 10]];
[ages addObject: [NSNumber numberWithInt: 21]];
price = 45;
culler = [NSString stringWithString: @"bright green"];
NSLog(@"waking up from nib, ages contains %i objects",[ages count]);
NSLog(@"they are ...");
for(int i = 0; i<[ages count]; i++)
{
NSLog(@"%i", [[ages objectAtIndex: i] integerValue]);
}
NSLog(@"waking up from nib, the current price …Run Code Online (Sandbox Code Playgroud) 有什么区别:
[blah addObject:@"1"];
Run Code Online (Sandbox Code Playgroud)
和
[blah insertObject:@"0" atIndex:0];
Run Code Online (Sandbox Code Playgroud)
???
我知道他们都是为了NSMutableArray.
我有两个要素:
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."你好".我想将该数组对象复制到另一个数组中.
我怎么做?
这是一个非常基本的问题,即使我认为理解NSPredicate的基础知识,我仍然有点难过为什么我在这里得到一个错误(searchText是一个指向NSString对象的指针,它被传递到方法).
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF.name contains[cd] %@", searchText];
_searchResults = [_personArray filteredArrayUsingPredicate:predicate];
Run Code Online (Sandbox Code Playgroud)
我有一个自定义对象的NSMutableArray(例如,Person对象),它有一个name属性.我想要做的就是在用户开始输入UISearchBar时使用NSPredicate来过滤潜在的匹配.IB组件很简单,看起来功能很好.但是,当我尝试搜索并开始过滤时,基本应用程序崩溃并出现以下错误:
'NSInvalidArgumentException', reason: '-[xPerson isEqualToString:]: unrecognized selector sent to instance 0x8043340'
我的理解是谓词将被传递给NSMutableArray中的每个对象,谓词中的SELF关键字引用相应的对象(我相信,在这种情况下甚至不需要),而.name是能够在自定义对象上使用合成属性.该错误似乎表明在自定义对象上调用了-isEqualToString:调用,而不是对象的属性.
任何关于我做错的建议都会受到极大的赞赏.
我有一个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) 在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
objective-c ×8
ios ×6
ios5 ×2
nsarray ×2
xcode ×2
class ×1
iphone ×1
nspredicate ×1
nsstring ×1
swift ×1
xcode4.2 ×1