我试图用[myarray removeallobjects]清空一个NSMutableArray; 但我收到错误exc_bad_access.这是清空阵列的正确方法吗?我试图把它设置为零,但它也没有用.实际上我正在做的是用数据填充数组,用户可以选择"刷新"数据,我想在输入刷新的数据之前清空数组.我不能发布任何代码因为太大了.
我以为我有它,
void shiftArray(NSMutableArray *mutableArray, NSUInteger shift)
{
for (NSUInteger i = 0; i < [mutableArray count]; i++) {
NSUInteger newIndex = (i + shift) % [mutableArray count];
[mutableArray exchangeObjectAtIndex:i withObjectAtIndex:newIndex];
}
}
Run Code Online (Sandbox Code Playgroud)
当我换一个时,它将0,1,2,3,4变成0,2,3,4,1.
预期结果是4,0,1,2,3
我觉得我错过了一些明显的东西......
更新:感谢Matthieu,这就是我现在的功能.
void shiftArrayRight(NSMutableArray *mutableArray, NSUInteger shift) {
for (NSUInteger i = shift; i > 0; i--) {
NSObject *obj = [mutableArray lastObject];
[mutableArray insertObject:obj atIndex:0];
[mutableArray removeLastObject];
}
}
Run Code Online (Sandbox Code Playgroud)
我不知道你可以制作一个通用的NSObject并在其中加入一些子类.它只是指针所以我猜它没关系,对吧?
很难打破将这些物体视为袋子的习惯,而不是指向袋子的指针.
我想将字符串拆分为NSMutableArray
我知道
- (NSArray *)componentsSeparatedByString:(NSString *)separator
Run Code Online (Sandbox Code Playgroud)
是可用的但是这个NSArray不是为了NSMutableArray.
我需要因为在分裂后我想通过使用从数组中删除元素
-(void)removeObjectAtIndex:(NSUInteger)index
Run Code Online (Sandbox Code Playgroud)
这是NSArray无法实现的.
谢谢
我有一个自定义对象,如:
#import <Foundation/Foundation.h>
@interface Store : NSObject{
NSString *name;
NSString *address;
}
@property (nonatomic, retain) NSString *name;
@property (nonatomic, retain) NSString *address;
@end
Run Code Online (Sandbox Code Playgroud)
我有一个包含Store对象的NSMutableArray(storeArray)数组:
store1 = [[Store alloc] init];
store1.name = @"Walmart";
store1.address = @"walmart address here..";
store2 = [[Store alloc] init];
store2.name = @"Target";
store2.address = @"Target address here..";
store3 = [[Store alloc] init];
store3.name = @"Apple Store";
store3.address = @"Apple store address here..";
//add stores to array
storeArray = [[NSMutableArray alloc] init];
[storeArray addObject:store1];
[storeArray addObject:store2];
[storeArray addObject:store3]; …Run Code Online (Sandbox Code Playgroud) Apple文档说该- (void)removeObject:(id)anObject方法从中删除了所有出现的给定对象NSMutableArray.
有没有办法从数组中只删除一个对象?
在Xcode中,我存储一些NSString在NSMutableArray.
Hello
Here
MyBook
Bible
Array
Name2
There
IamCriminal
Run Code Online (Sandbox Code Playgroud)
用户可以输入字符串.
Name2
Run Code Online (Sandbox Code Playgroud)
我需要在NSMutableArray不知道字符串索引的情况下删除该特定字符串.我有一点想法,使用迭代.任何其他最佳方式.Plz给出样本编码.
我有NSMutableArray9个对象.这些对象有很多属性,如questionName,questionWhatRow等.
我希望能够为其中的所有对象更改其中一个属性NSMutableArray.
这是我的NSMutableArray类.
-(id) init
{
self = [super init];
if (self)
{
self.questionsArray = [[NSMutableArray alloc] init];
Question *newQuestion = [[Question alloc] init];
newQuestion.questionName = @"What is the name of the girl who has to fetch water for her family every day?";
newQuestion.questionRowName = @"Question 1";
newQuestion.questionAnswer = @"Nya";
newQuestion.questionHint = @"Maybe if you read the book you would know";
newQuestion.questionWhatRow = @"Nya";
newQuestion.questionCompleteOrNot = @"No";
newQuestion.pointForQuestion = 1; …Run Code Online (Sandbox Code Playgroud) 我认为这项工作很容易,但我无法理解为什么我的NSMutableDictionary属性不能像我预期的那样工作.
[self.testSprite.userData setValue:@"CAT" forKey:@"key"];
NSLog(@"%@", [self.testSprite.userData objectForKey:@"key"]);
NSLog(@"%lu", [self.testSprite.userData count]);
Run Code Online (Sandbox Code Playgroud)
我重新调整(null)和0.
有没有使用spriteNode userdata的特殊技巧?
谢谢
我正在尝试将数组类型对象推送到Apple的新Swift语言中的数组内的特殊索引.它应该看起来像这样[ [...], [...], ...],正如我在文档中所读到的那样 - NSMutableArray如果它是自动分配给变量的类型var,但即使在操场上也会引发错误:
var arr = [];
arr[0] = []; // Error: cannot assign to result of this expression
arr.insert([], atIndex:0) // Error: 'NSArray' does not have member named 'insert'
Run Code Online (Sandbox Code Playgroud) 我试图在Swift中构建一个数据结构,将Integer映射到一个对象数组(一个字典,其中int为键,数组为value).对象非常小,它们只需包装UIColor和Int.我有两个实现,一个使用Swift数组作为Dictionary的值类型,而另一个使用NSMutableArray作为值类型.我的Objective-C代码执行速度非常快,但我的Swift代码运行得非常慢.理想情况下,我不想使用NSMutableArray,并希望将其保留为Swift数组.原因是我正在编写算法和性能问题,我注意到了objC_msgSend的一些开销.任何人都可以帮我优化我的Swift代码吗?我做错了什么,或者这只是快速处理数组作为值类型的副产品?如果是,我想理解为什么值类型在这种情况下表现得如此之慢,我的选择是什么,以及这种情况如何能够在未来扩展?下面我发布了一个代码段和结果基准:
Swift数组代码:
let numColors = colorCount(filter: filter, colorInfoCount: colorInfo.count)
var colorCountsArray: [Int] = [Int]()
var countToColorMap: [Int:[CountedColor]] = [Int:[CountedColor]](minimumCapacity: capacity)
var topColors = [CountedColor]()
var startTime = CACurrentMediaTime()
for (color, colorCount) in colorInfo {
colorCountsArray.append(colorCount)
if countToColorMap[colorCount] != nil {
countToColorMap[colorCount]?.append(CountedColor(color: color, colorCount: colorCount))
} else {
countToColorMap[colorCount] = [CountedColor(color: color, colorCount: colorCount)]
}
}
var endTime = CACurrentMediaTime()
print("Time after mapping: \(endTime - startTime)")
Run Code Online (Sandbox Code Playgroud)
迅捷表现:
Time after mapping: 45.0881789259997
Run Code Online (Sandbox Code Playgroud)
NSMutableArray代码:
let numColors = colorCount(filter: filter, colorInfoCount: colorInfo.count)
var colorCountsArray: …Run Code Online (Sandbox Code Playgroud) nsmutablearray ×10
objective-c ×4
ios ×2
iphone ×2
nsstring ×2
swift ×2
algorithm ×1
arrays ×1
cocoa ×1
cocoa-touch ×1
nsarray ×1
object ×1
properties ×1
shift ×1
split ×1
sprite ×1
sprite-kit ×1
string ×1
user-data ×1
value-type ×1
xcode ×1