我有一个NSMutableArray包含CMTime对象的3个对象.如何以有效的方式遍历所有这三个,并找出这三个中是否存在重复值?例如,我正在迭代其中一个时间并读取值并将其存储x.现在,我想看看是否x在其他两个数组中发生(在任何位置).我试着找一个contains方法,但找不到一个.我确实遇到过filterUsingPredicate,但我不确定这是否是最好的方式,也不知道如何实际使用谓词.
我想要计算子数组满足条件的数组.我以为我能做到这一点,但我做不到.
NSLog(@"%d",[[_sections enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
[[obj objectAtIndex:4] isEqualToString:@"1"];
}] count]);
Run Code Online (Sandbox Code Playgroud) 我似乎无法找到什么是错的.这是我的代码:
NSMutableArray *sortedActivities = [NSMutableArray arrayWithCapacity:self.trainingSession.activities.count];
for (ManagedActivity *activity in self.trainingSession.activities)
[sortedActivities insertObject:activity atIndex:[activity.activityIndex unsignedIntegerValue]];
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我希望通过活动中名为activityIndex的属性对活动集(在trainingSession中的关系)进行排序.活动的索引始终从0开始,这意味着没有索引超过trainSession.activities.count-1.
我通过分配具有适当容量的NSMutableArray进行排序,然后迭代活动(一次)并将它们插入到正确的索引中.由于某种原因,我不知道我得到这个错误:
由于未捕获的异常'NSRangeException'而终止应用程序,原因:' * - [__ NSArrayM insertObject:atIndex:]:索引2超出空数组的边界'
我试着保留阵列,这没关系(并且应该没关系).
索引是正确的,计数是否正确,有什么不对?
我有一个奇怪的问题,如果我在forin枚举中删除我的项目,它会崩溃,所以像这样:
for (Obstacle *obstacleToTrack in _obstaclesToAnimate) {
//this if else not so important for happening crash
if(obstacleToTrack.distance > 0){
obstacleToTrack.distance -= _playerSpeed * _elapsed;
}else{
if (obstacleToTrack.watchOut) {
obstacleToTrack.watchOut = NO;
}
obstacleToTrack.x -= (_playerSpeed + obstacleToTrack.speed) * _elapsed;
}
if (obstacleToTrack.x < -obstacleToTrack.width || _gameState == GS_OVER) {
[self removeChild:obstacleToTrack];
//this line makes crash happen , if remove this line code work fine
[_obstaclesToAnimate removeObject:obstacleToTrack];
}
}
Run Code Online (Sandbox Code Playgroud)
如果我改变我的代码
NSMutableArray *forRemoving = [[NSMutableArray alloc]init];
for (Obstacle *obstacleToTrack in _obstaclesToAnimate) { …Run Code Online (Sandbox Code Playgroud) 我刚注意到一个令人惊讶的行为NSArray,这就是我发布这个问题的原因.
我刚刚添加了一个方法:
- (IBAction) crashOrNot
{
NSArray *array = [[NSArray alloc] init];
array = [[NSArray alloc] init];
[array release];
[array release];
}
Run Code Online (Sandbox Code Playgroud)
从理论上讲,这段代码会崩溃.但在我的情况下它永远不会崩溃!
我改变了NSArray,NSMutableArray但这次应用程序崩溃了.为什么会发生这种情况,为什么NSArray不崩溃和NSMutableArray崩溃?
我有一个NSMutableArray*recordsArray,键是NSStrings,值是一个自定义对象:
@interface DictRecord : NSObject{
}
@property (nonatomic, retain) NSString* word;
@property (nonatomic, retain) NSString *wordStatus;
Run Code Online (Sandbox Code Playgroud)
Cocoa:如何保存/存档包含自定义对象的NSMutableArray
我想保存NSMutable数组,最好是非二进制(稍微可读)格式.
我已阅读文档并已将编码方法添加到DictRecord:
- (void) encodeWithCoder: (NSCoder *)coder
{
[coder encodeObject: _word forKey:@"word" ];
[coder encodeObject: _wordStatus forKey:@"wordStatus" ];
}
- (id) initWithCoder: (NSCoder *) coder
{
self = [super init];
if (self) {
self.word = [coder decodeObjectForKey:@"word"];
self.wordStatus = [coder decodeObjectForKey:@"wordStatus"];
}
Run Code Online (Sandbox Code Playgroud)
然后我尝试保存使用:
[recordsArray writeToFile:filePath atomically:YES];
Run Code Online (Sandbox Code Playgroud)
文件已保存,但我可以看到它是空的.
任何人都可以告诉我我省略了哪些步骤,或者我是否以错误的方式解决了这个问题.
谢谢
我有NSMutableArray结果它有6个项目.我想将前三个内容复制到另一个NSArray.
我经常需要更改一个NSArray或一个的内容NSDictionary.通常我会这样:NSDictionary- >创建NSMutableDictionary并编辑它 - >用编辑过的原件替换原件NSDictionary(作为不可变的).
我知道有两种方法可以做到这一点:
1)使用mutable copy和copy:
NSDictionary *myDictionary = @{...};
NSMutableDictionary *dicToEdit = myDictionary.mutableCopy;
// Editing goes here`
myDictionary = dicToEdit.copy;
Run Code Online (Sandbox Code Playgroud)
2)使用arrayWithArray:或dictionaryWithDictionary:
NSDictionary *myDictionary = @{...};
NSMutableDictionary *dicToEdit = [NSMutableDictionary dictionaryWithDictionary:myDictionary];
// Editing goes here
myDictionary = [NSDictionary dictionaryWithDictionary:dicToEdit];
Run Code Online (Sandbox Code Playgroud)
这两种方式有什么区别吗?或者这两种方式中的一种有问题吗?
objective-c nsdictionary nsmutablearray nsarray nsmutabledictionary
我有一个NSMutableArray名为_groupCategoryCurrentIds其格式的数据
(
{
id = 2;
name = Fashion;
},
{
id = 5;
name = Leisure;
},
{
id = 14;
name = Clothing;
},
{
id = 17;
name = Sports;
},
{
id = 2;
name = Fashion;
},
{
id = 36;
name = Men;
},
{
id = 34;
name = Woodland;
},
{
id = 30;
name = Accessories;
},
{
id = 4;
name = Entertainment;
},
{
id …Run Code Online (Sandbox Code Playgroud) 当我点击加粗按钮时,我有一个文本编辑器
我可以用粗体字写这是代码
txtEditor.typingAttributes = [NSAttributedStringKey.foregroundColor.rawValue: UIColor.black/, NSAttributedStringKey.font.rawValue: UIFont.boldSystemFont(ofSize: (txtEditor.font?.pointSize)!)]
Run Code Online (Sandbox Code Playgroud)
我想在“中心文本中心对齐”中单击一个按钮(我写的行)时需要一个按钮,而不是其他行
这是代码
let paragraph = NSMutableParagraphStyle()
paragraph.alignment = .center
Run Code Online (Sandbox Code Playgroud)
但是在将如何在UITextview中添加这2行代码以输入居中对齐之后呢?
nsmutablearray ×10
objective-c ×6
ios ×5
iphone ×3
nsarray ×3
algorithm ×1
cocoa ×1
cocoa-touch ×1
nscoder ×1
nsdictionary ×1
nspredicate ×1
swift ×1
uitextview ×1
xcode ×1