我有一个NSMutableArray它自己里面有很多数组。在所有索引处的每个数组中,它们进一步具有下面给出的类的自定义对象。
Class User:NSObject{
var name = ""
var userName = ""
var email = ""
var age = 0
var gender = ""
var
}
Run Code Online (Sandbox Code Playgroud)
我想根据两个对象过滤这个嵌套数组。例如,如果用户在 searchBar 中键入一些文本并检查该嵌套数组中的文本,如果该文本与名称或用户名或两者匹配。
我创建了一个如下所示的数组
var childControllers = NSArray()
childControllers = NSArray(objects: OBDPage1, OBDPage2, OBDPage3, OBDPage4)
self.loadScrollView(page: 0)// calling method
Run Code Online (Sandbox Code Playgroud)
现在我想使用如下所示的数组对象
func loadScrollView(page: Int){ // method
if page >= childControllers.count {
return
}
// replace the placeholder if necessary
let controller: OBDPage1ViewController? = childControllers[page]
}
Run Code Online (Sandbox Code Playgroud)
但我遇到了以下错误
Swift-CarAssist/Swift-CarAssist/OBDCarMonitorDeatilViewController.swift:90:67:无法将类型“Any”的值转换为指定类型“OBDPage1ViewController”?
任何人都可以告诉我我哪里出了问题,因为我是斯威夫特的新手。
提前致谢。普里扬卡
Application Specific Information:
*** Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <__NSArrayM: 0x17204b070> was mutated while being enumerated.'
Last Exception Backtrace:
0 CoreFoundation 0x0000000186acefe0 __exceptionPreprocess + 124
1 libobjc.A.dylib 0x0000000185530538 objc_exception_throw + 56
2 CoreFoundation 0x0000000186acea30 __NSFastEnumerationMutationHandler + 128
3 UIKit 0x000000018cc22f04 -[UITextInteractionAssistant(UITextInteractionAssistant_Internal) clearGestureRecognizers:] + 220
4 UIKit 0x000000018cc22d78 -[UITextInteractionAssistant(UITextInteractionAssistant_Internal) setGestureRecognizers] + 88
5 UIKit 0x000000018d1d1d38 -[UIGestureRecognizerTarget _sendActionWithGestureRecognizer:] + 64
6 UIKit 0x000000018d1d556c _UIGestureRecognizerSendTargetActions + 124
7 UIKit 0x000000018cd8f470 _UIGestureRecognizerSendActions + 252
8 UIKit 0x000000018cc31380 -[UIGestureRecognizer _updateGestureWithEvent:buttonEvent:] …Run Code Online (Sandbox Code Playgroud)var arrEmails = NSMutableArray()
arrEmails = ["a.a@gmail.com", "a.a1@gmail.com", "a.a@gmail.com", "b.b@gmail.com", "c.c@gmail.com", "a.a1@gmail.com"]
Run Code Online (Sandbox Code Playgroud)
上面是我的数组,我想检查是否有任何重复的值。为此,我写了下面的代码。
let set = NSCountedSet.init(array: arrEmails as! [Any])
var duplicates: Int = 0
for var object in set {
if set.count(for: object) > 1 {
duplicates = duplicates+1
}
}
Run Code Online (Sandbox Code Playgroud)
但在上面的代码中,如果数组包含如下值,则返回重复值 1。
arrEmails = ["a.a@gmail.com", "", "", "b.b@gmail.com", "", ""]
Run Code Online (Sandbox Code Playgroud)
我不想删除重复值,我只想检查数组中重复值的数量。怎么查?请帮帮我。
在我的应用程序中,一个NSMutableArray在viewDidLoad中填充了一个对象(最终会有很多对象,但我只是在做一个直到我让它正常工作).我还启动了一个计时器,它启动一个需要每隔几秒访问NSMutableArray的方法.NSMutableArray在viewDidLoad中工作正常,但只要该方法完成,它就会丢失该对象.
myApp.h
@interface MyApp : UIViewController {
NSMutableArray *myMutableArray;
NSTimer *timer;
}
@property (nonatomic, retain) NSMutableArray *myMutableArray;
@property (nonatomic, retain) NSTimer *timer;
@end
Run Code Online (Sandbox Code Playgroud)
myApp.m
#import "MyApp.h"
@implementation MyApp
@synthesize myMutableArray;
- (void) viewDidLoad {
cycleTimer = [NSTimer scheduledTimerWithTimeInterval:4.0 target:self selector:@selector(newCycle) userInfo: nil repeats:YES];
MyObject *myCustomUIViewObject = [[MyObject alloc]init];
[myMutableArray addObject:myCustomUIViewObject];
[myCustomUIViewObject release];
NSLog(@"%i",[myMutableArray count]); /////outputs "1"
}
-(void) newCycle {
NSLog(@"%i",[myMutableArray count]); /////outputs "0" ?? why is this??
}
Run Code Online (Sandbox Code Playgroud) 我有一点问题:我创建了两个可变数组,并在"allProject"中添加了一个"actProject"对象.一切正常但我不知道如何显示allProject的单个对象(例如"Date").
NSMutableArray *allProject= [[NSMutableArray alloc]initWithObjects: nil];
NSMutableArray *actProject = [[NSMutableArray alloc]initWithObjects: nil];
[actProject addObject:(NSString*)@"Name"];
[actProject addObject:(NSString*)@"Description"];
[actProject addObject:(NSString*)@"Date"];
[allProject addObject:actProject];
NSLog(@"test: %@",[allProject objectAtIndex:0]);
Run Code Online (Sandbox Code Playgroud)
如何只通过访问"allProject"来获取"日期"?
有任何想法吗?
我在iPad上收到一个简单的文本字符串,我试图简单地将其解析为表格视图,但是我收到以下警告:
"Incompatible pointer type assigning to 'NSMutableArray*' from 'NSArray'"
Run Code Online (Sandbox Code Playgroud)
所以,controller.h
NSMutableArray *homeData;
@property (nonatomic, retain) NSMutableArray *homeData;
Run Code Online (Sandbox Code Playgroud)
然后,controller.m
@synthesize homeData;
Run Code Online (Sandbox Code Playgroud)
其次是
[searchData appendData:data];
NSString *searchString = [[NSString alloc] initWithData:searchData encoding:NSUTF8StringEncoding];
NSArray *sectionString = [searchString componentsSeparatedByString:@";;"];
homeData = [[[sectionString objectAtIndex:0] componentsSeparatedByString:@";"] retain];
(data = 'no_home;;no_locl;;no_natl;;9:CHardaker;;')
Run Code Online (Sandbox Code Playgroud)
在正常情况下,字符串将包含索引号和缩写名称列表,最多100个.
我在最后的homeData行上收到警告.我希望这homeData objectAtIndex:0应该是no_home,但不是,这是执行中唯一的优秀问题.
我有一个子类,UIViewController带有NSMutableArray一个属性,用作a的数据源UITableView.我在故事板中创建了一个类的实例.
我想用addObject:方法填充数组,但如果我尝试,数组总是返回(null).
我读过这@synthesize不会初始化数组,我可能需要覆盖-init并初始化NSMutableArray那里,但-init永远不会被调用.
这应该怎么样?
我找到了很多关于NSMutableArrayvs的讨论NSArray.这非常有趣,我知道您无法在NSArray中添加或删除对象
但是有可能改变一个NSArray?
我的意思是,如果我有一个NSArray的NSNumber,我可以改变NSNumber的NSArray或者我应该使用NSMutableArray能够修改该对象的值NSArray ?
我有一个名为的模型类PhotoItem.我有一个BOOL属性isSelected
@interface PhotoItem : NSObject
/*!
* Indicates whether the photo is selected or not
*/
@property (nonatomic, assign) BOOL isSelected;
@end
Run Code Online (Sandbox Code Playgroud)
我NSMutableArray拥有这个特定模型的对象.我想要做的是,在特定情况下,我想将数组中所有对象的bool值设置为true或false.我可以通过迭代数组并设置值来做到这一点.
而不是我尝试使用:
[_photoItemArray makeObjectsPerformSelector:@selector(setIsSelected:) withObject:[NSNumber numberWithBool:true]];
Run Code Online (Sandbox Code Playgroud)
但我知道它不起作用,但事实并非如此.此外,我不能传递真或假作为参数(因为那些不是对象类型).因此,为了解决这个问题,我实现了一个自定义公共方法,如:
/*!
* Used for setting the photo selection status
* @param selection : Indicates the selection status
*/
- (void)setItemSelection:(NSNumber *)selection
{
_isSelected = [selection boolValue];
}
Run Code Online (Sandbox Code Playgroud)
并称之为:
[_photoItemArray makeObjectsPerformSelector:@selector(setItemSelection:) withObject:[NSNumber numberWithBool:true]];
Run Code Online (Sandbox Code Playgroud)
它工作得很好.但我的问题是,如果没有实现自定义公共方法,有没有更好的方法来实现这一目标?
nsmutablearray ×10
objective-c ×6
ios ×5
swift ×3
arrays ×2
boolean ×1
crash ×1
duplicates ×1
ipad ×1
iphone ×1
nsarray ×1