标签: nsmutablearray

使用原始元素的可变副本复制NSArray

我正在一个类中创建一个字典数组.我想将该数组的副本返回给要求它的任何其他对象.传递给其他对象的副本需要在不修改原始对象的情况下进行修改.

所以我在我的类的getter方法中使用以下内容来保存"master"数组:

[[NSMutableArray alloc] initWithArray:masterArray copyItems:YES];
Run Code Online (Sandbox Code Playgroud)

但是,这似乎使所有字典内部不可变.我怎么能避免这个?

我想我在这里遗漏了一些东西.任何帮助都感激不尽!

cocoa objective-c copying nsmutablearray nsarray

11
推荐指数
3
解决办法
8306
查看次数

NSMutableArray中的元素数量

如何在运行时知道NSMutableArray中有多少个数组元素?

iphone objective-c nsmutablearray

11
推荐指数
1
解决办法
2万
查看次数

检查NSMutableArray中是否存在某些内容

我有一个NSMutableArray可以容纳几个对象.我想检查是否存在对象,如果存在,则更改它.我想知道检查它.我认为这会奏效:

if ([[[self.myLibrary objectAtIndex:1] subObject] objectAtIndex:1]) // do something
Run Code Online (Sandbox Code Playgroud)

但是,如果索引1处没有任何子对象,则会崩溃.所以我猜问题是如果此索引中没有任何内容,则上述内容不会返回nil.

还有另一种简单的检查方法,还是我必须通过数组等计算?我知道stackoverflow上还有其他帖子,但我还没有找到一个简单的答案.

欢迎任何解释/建议.谢谢!

iphone cocoa-touch objective-c nsmutablearray

11
推荐指数
2
解决办法
3万
查看次数

如何在NSMutableArray中更新对象?

我正在尝试更新NSMutableArray中的对象.

Product *message = (Product*)[notification object];
Product *prod = nil;

for(int i = 0; i < ProductList.count; i++)
{
    prod = [ProductList objectAtIndex:i];
    if([message.ProductNumber isEqualToString:prod.ProductNumber])
    {
        prod.Status = @"NotAvaiable";
        prod.Quantity = 0;
        [ProductList removeObjectAtIndex:i];
        [ProductList insertObject:prod atIndex:i];
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来做到这一点?

objective-c nsmutablearray ios

11
推荐指数
5
解决办法
2万
查看次数

如何在Objective C中初始化NSMutableArray?

我来自Java背景,我正在学习Objective C.我正在尝试创建一个具有字符串数组和成员函数来修改数组的类.我的代码看起来像这样:

@implementation TAWChapter

@synthesize mSubject;

@synthesize mItems;

- (id) init{
    self.mItems = [[NSMutableArray alloc] init];
    return self; 
}

- (void) setSubject:(NSString *)subject{
    self.mSubject = subject; 
}

- (void) addItem:(NSString *)item{
    [self.mItems addObject:@"asdf"]; 
}

@end
Run Code Online (Sandbox Code Playgroud)

哪个没用.我得到了一个"[__NSArrayI addObject:]: unrecognized selector sent to instance "和一个"NSInvalidArgumentException".在互联网上搜索后,我将构造函数中的单行更改为:

self.mItems = [self.mItems init];
Run Code Online (Sandbox Code Playgroud)

它有效,但为什么呢?从Java开发人员的角度来看,第一个比第二个更有意义.我有另一条线,它与第一条线相同,但它正在工作(不在构造函数中).有人可以向我解释一下吗?

objective-c nsmutablearray

11
推荐指数
2
解决办法
4万
查看次数

如何打印(NSLog)添加到NSMutableArray的自定义对象的属性

我有一个自定义对象,我创建了3个属性.我创建对象并将值分配给这些属性.之后我把那个物体放进去了NSMutable Array.我知道我可以用:

for (id obj in personArray)
{
             NSLog(@"obj: %@", obj);
}
NSLog(@"%@", personArray);
Run Code Online (Sandbox Code Playgroud)

告诉我我的数组中有哪些对象.但是我希望更深入一些,我希望能够看到每个对象的属性.我只是不确定如何定位它们.

这是我正在使用的代码:Person是我的自定义对象.

personObject = [[Person alloc]init];
[personObject setFirstName:firstName.text];
[personObject setLastName:lastName.text];
[personObject setEmail:emailAddress.text];

// add the person object to the array
// the array was alloc and init in a method above this code.
[personArray addObject:personObject];

for (id obj in personArray)
{
    NSLog(@"obj: %@", obj);
}

NSLog(@"%@", personArray);
Run Code Online (Sandbox Code Playgroud)

objective-c nsmutablearray ios

11
推荐指数
2
解决办法
6898
查看次数

类型为var Array的Swift类字段将转换为不可变的NSArray而不是NSMutableArray

一个简单的Swift类有一个var array类型的字段.当类适应Objective-C时,字段类型公开为NSArray(不可变),而它应该是NSMutableArray(可变)

class Categoryy: NSObject {

    var items = Array<Item>()

}
Run Code Online (Sandbox Code Playgroud)

Classy swift类适用于Xcode生成的头文件MODULE_NAME-swift.h文件中的Objective-C,如下所示:

SWIFT_CLASS("_TtC8waiterio9Categoryy")
@interface Categoryy : NSObject
@property (nonatomic, copy) NSArray * items;
- (instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end
Run Code Online (Sandbox Code Playgroud)

是否有一种方法可以将var项:Array字段转换为Objective-c中的可变NSMutableArray?

objective-c nsmutablearray nsarray swift xcode6

11
推荐指数
1
解决办法
1104
查看次数

在objective-c中混洗一个数组

可能重复:
什么是洗牌NSMutableArray的最佳方式?

我为iphone/iPad开发应用程序.我想要对存储在NSArray中的对象进行洗牌.有没有办法用objective-c来实现它?

iphone nsmutablearray nsarray ipad ios

10
推荐指数
1
解决办法
1万
查看次数

如何将ABRecordRef添加到iPhone中的NSMutableArray?

我想创建一个ABRecordRef(s)数组来存储具有有效生日字段的联系人.

   NSMutableArray* bContacts = [[NSMutableArray alloc] init];
   ABAddressBookRef addressBook = ABAddressBookCreate();
   CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(addressBook);
   CFIndex nPeople = ABAddressBookGetPersonCount(addressBook);

   for( int i = 0 ; i < nPeople ; i++ )
   {
       ABRecordRef ref = CFArrayGetValueAtIndex(allPeople, i );
       NSDate* birthdayDate = (NSDate*) ABRecordCopyValue(ref, kABPersonBirthdayProperty);
       if (birthdayDate != nil){
           [bContacts addObject:ref];
       }
   }
Run Code Online (Sandbox Code Playgroud)

编译器显示此警告: 警告:传递'addObject:'的参数1'从指针目标类型中丢弃限定符 我在Web上搜索并发现我必须将ABRecordRef强制转换为ABRecord*以便能够存储在NSMutableArray中.

[bContacts addObject:(ABRecord*) ref];
Run Code Online (Sandbox Code Playgroud)

但似乎ABRecord不是iOS框架的一部分.现在我如何将ABRecordRef存储到NSMutableArray?

iphone xcode objective-c nsmutablearray addressbook

10
推荐指数
3
解决办法
7237
查看次数

如何创建NSMutableArray并为其分配特定对象?

我刚刚进入Obj C,我正在寻找创建一个MKAnnotations数组.

我已经创建了一个名为MKAnnotation的类TruckLocation,它包含名称,描述,纬度和经度.

这是我到目前为止的数组:

NSMutableArray* trucksArray =[NSMutableArray arrayWithObjects: @[<#objects, ...#>]  nil];
Run Code Online (Sandbox Code Playgroud)

objective-c nsmutablearray mkannotation ios

10
推荐指数
3
解决办法
6万
查看次数